Last active
July 30, 2022 23:54
-
-
Save typebrook/cbe127eaacf59166f92d12f294ef16a4 to your computer and use it in GitHub Desktop.
Remove elements from Mapbox Vector Tiles #protobuf #python #tilemaker #pbf #mvt
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| pbf: | |
| curl -O https://typebrook.github.io/mapstew/tiles/13/6861/3507.pbf | |
| diff: | |
| curl -O https://download.openstreetmap.fr/replication/asia/minute/004/508/867.osc.gz |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <test.osc sed -En 's/ *<(node|way|relation) id="([^"]+)".+/\2/p'])"' |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import vector_tile_pb2 | |
| import sys | |
| input = vector_tile_pb2.Tile() | |
| with open(sys.argv[1], "rb") as f: | |
| input.ParseFromString(f.read()) | |
| with open('list', "rb") as f: | |
| id_list = [int(x.decode()) for x in f.read().splitlines()] | |
| for layer in input.layers: | |
| for f in layer.features: | |
| if f.id in id_list: | |
| layer.features.remove(f) | |
| with open('output.pb', "wb") as f: | |
| f.write(input.SerializeToString()) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # -*- coding: utf-8 -*- | |
| # Generated by the protocol buffer compiler. DO NOT EDIT! | |
| # source: vector_tile.proto | |
| """Generated protocol buffer code.""" | |
| from google.protobuf import descriptor as _descriptor | |
| from google.protobuf import message as _message | |
| from google.protobuf import reflection as _reflection | |
| from google.protobuf import symbol_database as _symbol_database | |
| # @@protoc_insertion_point(imports) | |
| _sym_db = _symbol_database.Default() | |
| DESCRIPTOR = _descriptor.FileDescriptor( | |
| name='vector_tile.proto', | |
| package='vector_tile', | |
| syntax='proto2', | |
| serialized_options=None, | |
| create_key=_descriptor._internal_create_key, | |
| serialized_pb=b'\n\x11vector_tile.proto\x12\x0bvector_tile\"\xc0\x04\n\x04Tile\x12\'\n\x06layers\x18\x03 \x03(\x0b\x32\x17.vector_tile.Tile.Layer\x1a\xa1\x01\n\x05Value\x12\x14\n\x0cstring_value\x18\x01 \x01(\t\x12\x13\n\x0b\x66loat_value\x18\x02 \x01(\x02\x12\x14\n\x0c\x64ouble_value\x18\x03 \x01(\x01\x12\x11\n\tint_value\x18\x04 \x01(\x03\x12\x12\n\nuint_value\x18\x05 \x01(\x04\x12\x12\n\nsint_value\x18\x06 \x01(\x12\x12\x12\n\nbool_value\x18\x07 \x01(\x08*\x08\x08\x08\x10\x80\x80\x80\x80\x02\x1as\n\x07\x46\x65\x61ture\x12\r\n\x02id\x18\x01 \x01(\x04:\x01\x30\x12\x10\n\x04tags\x18\x02 \x03(\rB\x02\x10\x01\x12\x31\n\x04type\x18\x03 \x01(\x0e\x32\x1a.vector_tile.Tile.GeomType:\x07UNKNOWN\x12\x14\n\x08geometry\x18\x04 \x03(\rB\x02\x10\x01\x1a\xad\x01\n\x05Layer\x12\x12\n\x07version\x18\x0f \x02(\r:\x01\x31\x12\x0c\n\x04name\x18\x01 \x02(\t\x12+\n\x08\x66\x65\x61tures\x18\x02 \x03(\x0b\x32\x19.vector_tile.Tile.Feature\x12\x0c\n\x04keys\x18\x03 \x03(\t\x12\'\n\x06values\x18\x04 \x03(\x0b\x32\x17.vector_tile.Tile.Value\x12\x14\n\x06\x65xtent\x18\x05 \x01(\r:\x04\x34\x30\x39\x36*\x08\x08\x10\x10\x80\x80\x80\x80\x02\"?\n\x08GeomType\x12\x0b\n\x07UNKNOWN\x10\x00\x12\t\n\x05POINT\x10\x01\x12\x0e\n\nLINESTRING\x10\x02\x12\x0b\n\x07POLYGON\x10\x03*\x05\x08\x10\x10\x80@' | |
| ) | |
| _TILE_GEOMTYPE = _descriptor.EnumDescriptor( | |
| name='GeomType', | |
| full_name='vector_tile.Tile.GeomType', | |
| filename=None, | |
| file=DESCRIPTOR, | |
| create_key=_descriptor._internal_create_key, | |
| values=[ | |
| _descriptor.EnumValueDescriptor( | |
| name='UNKNOWN', index=0, number=0, | |
| serialized_options=None, | |
| type=None, | |
| create_key=_descriptor._internal_create_key), | |
| _descriptor.EnumValueDescriptor( | |
| name='POINT', index=1, number=1, | |
| serialized_options=None, | |
| type=None, | |
| create_key=_descriptor._internal_create_key), | |
| _descriptor.EnumValueDescriptor( | |
| name='LINESTRING', index=2, number=2, | |
| serialized_options=None, | |
| type=None, | |
| create_key=_descriptor._internal_create_key), | |
| _descriptor.EnumValueDescriptor( | |
| name='POLYGON', index=3, number=3, | |
| serialized_options=None, | |
| type=None, | |
| create_key=_descriptor._internal_create_key), | |
| ], | |
| containing_type=None, | |
| serialized_options=None, | |
| serialized_start=541, | |
| serialized_end=604, | |
| ) | |
| _sym_db.RegisterEnumDescriptor(_TILE_GEOMTYPE) | |
| _TILE_VALUE = _descriptor.Descriptor( | |
| name='Value', | |
| full_name='vector_tile.Tile.Value', | |
| filename=None, | |
| file=DESCRIPTOR, | |
| containing_type=None, | |
| create_key=_descriptor._internal_create_key, | |
| fields=[ | |
| _descriptor.FieldDescriptor( | |
| name='string_value', full_name='vector_tile.Tile.Value.string_value', index=0, | |
| number=1, type=9, cpp_type=9, label=1, | |
| has_default_value=False, default_value=b"".decode('utf-8'), | |
| message_type=None, enum_type=None, containing_type=None, | |
| is_extension=False, extension_scope=None, | |
| serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), | |
| _descriptor.FieldDescriptor( | |
| name='float_value', full_name='vector_tile.Tile.Value.float_value', index=1, | |
| number=2, type=2, cpp_type=6, label=1, | |
| has_default_value=False, default_value=float(0), | |
| message_type=None, enum_type=None, containing_type=None, | |
| is_extension=False, extension_scope=None, | |
| serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), | |
| _descriptor.FieldDescriptor( | |
| name='double_value', full_name='vector_tile.Tile.Value.double_value', index=2, | |
| number=3, type=1, cpp_type=5, label=1, | |
| has_default_value=False, default_value=float(0), | |
| message_type=None, enum_type=None, containing_type=None, | |
| is_extension=False, extension_scope=None, | |
| serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), | |
| _descriptor.FieldDescriptor( | |
| name='int_value', full_name='vector_tile.Tile.Value.int_value', index=3, | |
| number=4, type=3, cpp_type=2, label=1, | |
| has_default_value=False, default_value=0, | |
| message_type=None, enum_type=None, containing_type=None, | |
| is_extension=False, extension_scope=None, | |
| serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), | |
| _descriptor.FieldDescriptor( | |
| name='uint_value', full_name='vector_tile.Tile.Value.uint_value', index=4, | |
| number=5, type=4, cpp_type=4, label=1, | |
| has_default_value=False, default_value=0, | |
| message_type=None, enum_type=None, containing_type=None, | |
| is_extension=False, extension_scope=None, | |
| serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), | |
| _descriptor.FieldDescriptor( | |
| name='sint_value', full_name='vector_tile.Tile.Value.sint_value', index=5, | |
| number=6, type=18, cpp_type=2, label=1, | |
| has_default_value=False, default_value=0, | |
| message_type=None, enum_type=None, containing_type=None, | |
| is_extension=False, extension_scope=None, | |
| serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), | |
| _descriptor.FieldDescriptor( | |
| name='bool_value', full_name='vector_tile.Tile.Value.bool_value', index=6, | |
| number=7, type=8, cpp_type=7, label=1, | |
| has_default_value=False, default_value=False, | |
| message_type=None, enum_type=None, containing_type=None, | |
| is_extension=False, extension_scope=None, | |
| serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), | |
| ], | |
| extensions=[ | |
| ], | |
| nested_types=[], | |
| enum_types=[ | |
| ], | |
| serialized_options=None, | |
| is_extendable=True, | |
| syntax='proto2', | |
| extension_ranges=[(8, 536870912), ], | |
| oneofs=[ | |
| ], | |
| serialized_start=85, | |
| serialized_end=246, | |
| ) | |
| _TILE_FEATURE = _descriptor.Descriptor( | |
| name='Feature', | |
| full_name='vector_tile.Tile.Feature', | |
| filename=None, | |
| file=DESCRIPTOR, | |
| containing_type=None, | |
| create_key=_descriptor._internal_create_key, | |
| fields=[ | |
| _descriptor.FieldDescriptor( | |
| name='id', full_name='vector_tile.Tile.Feature.id', index=0, | |
| number=1, type=4, cpp_type=4, label=1, | |
| has_default_value=True, default_value=0, | |
| message_type=None, enum_type=None, containing_type=None, | |
| is_extension=False, extension_scope=None, | |
| serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), | |
| _descriptor.FieldDescriptor( | |
| name='tags', full_name='vector_tile.Tile.Feature.tags', index=1, | |
| number=2, type=13, cpp_type=3, label=3, | |
| has_default_value=False, default_value=[], | |
| message_type=None, enum_type=None, containing_type=None, | |
| is_extension=False, extension_scope=None, | |
| serialized_options=b'\020\001', file=DESCRIPTOR, create_key=_descriptor._internal_create_key), | |
| _descriptor.FieldDescriptor( | |
| name='type', full_name='vector_tile.Tile.Feature.type', index=2, | |
| number=3, type=14, cpp_type=8, label=1, | |
| has_default_value=True, default_value=0, | |
| message_type=None, enum_type=None, containing_type=None, | |
| is_extension=False, extension_scope=None, | |
| serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), | |
| _descriptor.FieldDescriptor( | |
| name='geometry', full_name='vector_tile.Tile.Feature.geometry', index=3, | |
| number=4, type=13, cpp_type=3, label=3, | |
| has_default_value=False, default_value=[], | |
| message_type=None, enum_type=None, containing_type=None, | |
| is_extension=False, extension_scope=None, | |
| serialized_options=b'\020\001', file=DESCRIPTOR, create_key=_descriptor._internal_create_key), | |
| ], | |
| extensions=[ | |
| ], | |
| nested_types=[], | |
| enum_types=[ | |
| ], | |
| serialized_options=None, | |
| is_extendable=False, | |
| syntax='proto2', | |
| extension_ranges=[], | |
| oneofs=[ | |
| ], | |
| serialized_start=248, | |
| serialized_end=363, | |
| ) | |
| _TILE_LAYER = _descriptor.Descriptor( | |
| name='Layer', | |
| full_name='vector_tile.Tile.Layer', | |
| filename=None, | |
| file=DESCRIPTOR, | |
| containing_type=None, | |
| create_key=_descriptor._internal_create_key, | |
| fields=[ | |
| _descriptor.FieldDescriptor( | |
| name='version', full_name='vector_tile.Tile.Layer.version', index=0, | |
| number=15, type=13, cpp_type=3, label=2, | |
| has_default_value=True, default_value=1, | |
| message_type=None, enum_type=None, containing_type=None, | |
| is_extension=False, extension_scope=None, | |
| serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), | |
| _descriptor.FieldDescriptor( | |
| name='name', full_name='vector_tile.Tile.Layer.name', index=1, | |
| number=1, type=9, cpp_type=9, label=2, | |
| has_default_value=False, default_value=b"".decode('utf-8'), | |
| message_type=None, enum_type=None, containing_type=None, | |
| is_extension=False, extension_scope=None, | |
| serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), | |
| _descriptor.FieldDescriptor( | |
| name='features', full_name='vector_tile.Tile.Layer.features', index=2, | |
| number=2, type=11, cpp_type=10, label=3, | |
| has_default_value=False, default_value=[], | |
| message_type=None, enum_type=None, containing_type=None, | |
| is_extension=False, extension_scope=None, | |
| serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), | |
| _descriptor.FieldDescriptor( | |
| name='keys', full_name='vector_tile.Tile.Layer.keys', index=3, | |
| number=3, type=9, cpp_type=9, label=3, | |
| has_default_value=False, default_value=[], | |
| message_type=None, enum_type=None, containing_type=None, | |
| is_extension=False, extension_scope=None, | |
| serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), | |
| _descriptor.FieldDescriptor( | |
| name='values', full_name='vector_tile.Tile.Layer.values', index=4, | |
| number=4, type=11, cpp_type=10, label=3, | |
| has_default_value=False, default_value=[], | |
| message_type=None, enum_type=None, containing_type=None, | |
| is_extension=False, extension_scope=None, | |
| serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), | |
| _descriptor.FieldDescriptor( | |
| name='extent', full_name='vector_tile.Tile.Layer.extent', index=5, | |
| number=5, type=13, cpp_type=3, label=1, | |
| has_default_value=True, default_value=4096, | |
| message_type=None, enum_type=None, containing_type=None, | |
| is_extension=False, extension_scope=None, | |
| serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), | |
| ], | |
| extensions=[ | |
| ], | |
| nested_types=[], | |
| enum_types=[ | |
| ], | |
| serialized_options=None, | |
| is_extendable=True, | |
| syntax='proto2', | |
| extension_ranges=[(16, 536870912), ], | |
| oneofs=[ | |
| ], | |
| serialized_start=366, | |
| serialized_end=539, | |
| ) | |
| _TILE = _descriptor.Descriptor( | |
| name='Tile', | |
| full_name='vector_tile.Tile', | |
| filename=None, | |
| file=DESCRIPTOR, | |
| containing_type=None, | |
| create_key=_descriptor._internal_create_key, | |
| fields=[ | |
| _descriptor.FieldDescriptor( | |
| name='layers', full_name='vector_tile.Tile.layers', index=0, | |
| number=3, type=11, cpp_type=10, label=3, | |
| has_default_value=False, default_value=[], | |
| message_type=None, enum_type=None, containing_type=None, | |
| is_extension=False, extension_scope=None, | |
| serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), | |
| ], | |
| extensions=[ | |
| ], | |
| nested_types=[_TILE_VALUE, _TILE_FEATURE, _TILE_LAYER, ], | |
| enum_types=[ | |
| _TILE_GEOMTYPE, | |
| ], | |
| serialized_options=None, | |
| is_extendable=True, | |
| syntax='proto2', | |
| extension_ranges=[(16, 8192), ], | |
| oneofs=[ | |
| ], | |
| serialized_start=35, | |
| serialized_end=611, | |
| ) | |
| _TILE_VALUE.containing_type = _TILE | |
| _TILE_FEATURE.fields_by_name['type'].enum_type = _TILE_GEOMTYPE | |
| _TILE_FEATURE.containing_type = _TILE | |
| _TILE_LAYER.fields_by_name['features'].message_type = _TILE_FEATURE | |
| _TILE_LAYER.fields_by_name['values'].message_type = _TILE_VALUE | |
| _TILE_LAYER.containing_type = _TILE | |
| _TILE.fields_by_name['layers'].message_type = _TILE_LAYER | |
| _TILE_GEOMTYPE.containing_type = _TILE | |
| DESCRIPTOR.message_types_by_name['Tile'] = _TILE | |
| _sym_db.RegisterFileDescriptor(DESCRIPTOR) | |
| Tile = _reflection.GeneratedProtocolMessageType('Tile', (_message.Message,), { | |
| 'Value' : _reflection.GeneratedProtocolMessageType('Value', (_message.Message,), { | |
| 'DESCRIPTOR' : _TILE_VALUE, | |
| '__module__' : 'vector_tile_pb2' | |
| # @@protoc_insertion_point(class_scope:vector_tile.Tile.Value) | |
| }) | |
| , | |
| 'Feature' : _reflection.GeneratedProtocolMessageType('Feature', (_message.Message,), { | |
| 'DESCRIPTOR' : _TILE_FEATURE, | |
| '__module__' : 'vector_tile_pb2' | |
| # @@protoc_insertion_point(class_scope:vector_tile.Tile.Feature) | |
| }) | |
| , | |
| 'Layer' : _reflection.GeneratedProtocolMessageType('Layer', (_message.Message,), { | |
| 'DESCRIPTOR' : _TILE_LAYER, | |
| '__module__' : 'vector_tile_pb2' | |
| # @@protoc_insertion_point(class_scope:vector_tile.Tile.Layer) | |
| }) | |
| , | |
| 'DESCRIPTOR' : _TILE, | |
| '__module__' : 'vector_tile_pb2' | |
| # @@protoc_insertion_point(class_scope:vector_tile.Tile) | |
| }) | |
| _sym_db.RegisterMessage(Tile) | |
| _sym_db.RegisterMessage(Tile.Value) | |
| _sym_db.RegisterMessage(Tile.Feature) | |
| _sym_db.RegisterMessage(Tile.Layer) | |
| _TILE_FEATURE.fields_by_name['tags']._options = None | |
| _TILE_FEATURE.fields_by_name['geometry']._options = None | |
| # @@protoc_insertion_point(module_scope) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment