2015-12-16 2 views
1

В соответствии с GeoJSON Формат спецификацииДобавление уникальной особенности идентификатора GeoJSON в QGIS или Python

«Если функция имеет обычно используемый идентификатор, что идентификатор должен быть включен в качестве члена объекта признака с именем» Я бы"."

Мой вопрос: как добавить это в свой GeoJSON?

Если я создаю его как атрибут, а затем сохранил его как GeoJSON в QGIS, он попадает в свойства вместо свойств.

Это то, что я хочу сделать:

{ 
"type": "FeatureCollection", 
"crs": { "type": "name", "properties": { "name":"urn:ogc:def:crs:OGC:1.3:CRS84" } }, 

"features": [ 
{ "type": "Feature", "id":"1", "properties": { "Namn":................. 

Это то, что производит QGIS:

{ 
"type": "FeatureCollection", 
"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 

"features": [ 
{ "type": "Feature", "properties": { "id": 1, "Name".................. 

Я также попытался PyGeoj https://github.com/karimbahgat/PyGeoj. У этого есть функция, чтобы добавить уникальный идентификатор, но он также добавляет его по свойствам.

Если я открою GeoJSON и напишу его вручную, он будет работать, но я не хочу делать это для всех моих слоев, некоторые из которых содержат множество функций.

ответ

0

Думал, что я напишу здесь, как я решил это, если кто-то сталкивается с той же проблемой.

Простой питон скрипт:

#create empty file to be writen to 
file = open("kommun_id.geojson", "w") 
count = 0 

#read original file 
with open('kommun.geojson', 'r')as myfile: 
    for line in myfile: 

     #lines that don't need to be edited with an 'id' 
     if not line.startswith('{ "type": '): 
      file.write(line) 
     else: 
      #lines that need to be edited 
      count = count +1 
      idNr = str(count) 
      file.write(line[0:20] + '"id":'+ '"'+ idNr + '",' +line[21:]) 

file.close() 

Он не может работать для всех geoGJSONs, но это работает для тех, я создал с QGIS

Смежные вопросы