Преобразование SimpleGeo Помещает файл GeoJSON в шейп-файл?


15

SimpleGeo недавно сделал свой набор данных «Места» в свободном доступе, который является БОЛЬШИМ, потому что теперь мы можем использовать его для наших собственных целей, даже в автономном режиме. Поэтому я начал загружать набор данных объемом 2 ГБ , который содержит сжатые файлы стран в формате GeoJSON.

Вот где начинается моя проблема ... когда я пытаюсь загрузить файл страны (* .geojson) непосредственно в QGIS или даже преобразовать его в шейп-файл с помощью ogr2ogr, я получаю только 1 очко.

Очевидно, что в этих файлах больше данных, которые я не могу «увидеть» или получить, так что я делаю неправильно? Может ли кто-нибудь дать мне какие-либо предложения о том, как превратить эти файлы в полезные функции ГИС?

Обновленный вопрос: я действительно хочу преобразовать файл geojson в шейп-файл (или аналогичный стандартный формат ГИС) для использования в настольной ГИС-программе.

Фрагмент из блога SimpleGeo 1 августа 2011 года :

«Набор данных« Места »в SimpleGeo теперь доступен для бесплатной загрузки. Если вы хотите получить 21M + POI, охватывающих 63 страны, мы готовы передать их вам в одном файле. 2 ГБ в формате .ZIP, и помните, что с лицензией CC0 эти данные становятся вашими - бесплатными и понятными - чтобы делать все, что вы хотите. Мы надеемся, что вы делаете с этим потрясающие вещи! Вы можете скачать их сейчас, нажав здесь. "

Обновление: 12 января 2012 года. После того, как SimpleGeo был приобретен Urban Airship в октябре 2011 года, Урбан Айсип сказал «свернуть доступность текущих версий Places, Context и Storage [SimpleGeo] в течение следующих нескольких месяцев» ... Целевой датой официального извлечения штекера будет 31 марта 2012 года. Ссылка


3
+1. Некоторое время назад слушал Мэтта Галлигана из SimpleGeo, который говорил, что данные о местоположении - это факт, и они должны быть в свободном доступе. Это контекст, который должен быть продан. Приятно видеть, что «они» имели в виду это. Также стремится использовать эти данные.
Эрик

Ответы:


10

Попробуйте обернуть функции в следующее:

{"type":"FeatureCollection","features":[ 

****ALL THE DATA HERE -- COMMA SEPARATED****

]}

и разделяя каждую функцию запятой.

Например, вот первые две функции из набора данных IE:

{"geometry": {"type": "Point", "coordinates": [-6.422587, 53.293363]}, "type": "Feature", "id": "SG_41u80gC4971D4Gc0Fv1p8q_53.293363_-6.422587@1308163237", "properties": {"website": "http://www.buongiorno.com", "city": "Dublin", "name": "Buongiorno", "tags": ["mobile", "vas", "community", "social-networking", "connected-devices", "android", "tablets", "smartphones"], "country": "IE", "classifiers": [{"category": "Professional", "type": "Services", "subcategory": "Computer Services"}], "href": "http://api.simplegeo.com/1.0/features/SG_41u80gC4971D4Gc0Fv1p8q_53.293363_-6.422587@1308163237.json", "address": "Lake Drive City West Digital Park", "owner": "simplegeo", "postcode": "3050"}}
{"geometry": {"type": "Point", "coordinates": [-6.250848, 53.339347]}, "type": "Feature", "id": "SG_1dnWbWIg8hX3VyfUKIDRz9_53.339347_-6.250848@1308163237", "properties": {"website": "http://www.simchronise.com", "city": "Dublin", "name": "SIMchronise", "tags": ["mobile-solutions", "mobile-data", "data-synchronisation", "mobile-security", "backup", "restore", "mobile-contacts", "web-2.0-addressbook", "phonebackup"], "country": "IE", "classifiers": [{"category": "Professional", "type": "Services", "subcategory": "Computer Services"}], "href": "http://api.simplegeo.com/1.0/features/SG_1dnWbWIg8hX3VyfUKIDRz9_53.339347_-6.250848@1308163237.json", "address": "78 Merrion Square", "owner": "simplegeo", "postcode": "Dublin2"}}

... и вот они как GeoJSON FeatureCollection:

{"type":"FeatureCollection","features":[ 
{"geometry": {"type": "Point", "coordinates": [-6.422587, 53.293363]}, "type": "Feature", "id": "SG_41u80gC4971D4Gc0Fv1p8q_53.293363_-6.422587@1308163237", "properties": {"website": "http://www.buongiorno.com", "city": "Dublin", "name": "Buongiorno", "tags": ["mobile", "vas", "community", "social-networking", "connected-devices", "android", "tablets", "smartphones"], "country": "IE", "classifiers": [{"category": "Professional", "type": "Services", "subcategory": "Computer Services"}], "href": "http://api.simplegeo.com/1.0/features/SG_41u80gC4971D4Gc0Fv1p8q_53.293363_-6.422587@1308163237.json", "address": "Lake Drive City West Digital Park", "owner": "simplegeo", "postcode": "3050"}},
{"geometry": {"type": "Point", "coordinates": [-6.250848, 53.339347]}, "type": "Feature", "id": "SG_1dnWbWIg8hX3VyfUKIDRz9_53.339347_-6.250848@1308163237", "properties": {"website": "http://www.simchronise.com", "city": "Dublin", "name": "SIMchronise", "tags": ["mobile-solutions", "mobile-data", "data-synchronisation", "mobile-security", "backup", "restore", "mobile-contacts", "web-2.0-addressbook", "phonebackup"], "country": "IE", "classifiers": [{"category": "Professional", "type": "Services", "subcategory": "Computer Services"}], "href": "http://api.simplegeo.com/1.0/features/SG_1dnWbWIg8hX3VyfUKIDRz9_53.339347_-6.250848@1308163237.json", "address": "78 Merrion Square", "owner": "simplegeo", "postcode": "Dublin2"}}
]}

После вашей публикации я понял, что действительно не прояснил свой вопрос, поэтому я отредактировал его. Я действительно хотел бы преобразовать данные в шейп-файл или другой стандартный формат ГИС для использования в настольной ГИС. Извините за плохо сформулированный вопрос, но спасибо за ответ @fod.
RyanKDalton

2
Ответ Fod приведет вас на полпути туда. Вам нужно будет предварительно обработать все эти дампы, чтобы обернуть объекты в FeatureCollection, как предложено fod, и отделить их запятыми. Самый простой способ сделать это - заменить все новые строки на, + новую строку (то есть \ n на, \ n), а затем заключить их в FeatureCollection, либо с помощью скрипта, либо вручную с помощью текстового редактора. После того, как вы исправили все файлы в GeoJSON, вы можете использовать ogr2ogr v1.8.0 или новее для преобразования GeoJSON в шейп-файл.
Саша Иветик

Отлично! Я не понимал, что это то, что нужно, чтобы сделать их «читабельными». Используя описанный выше метод, я смог сделать файл напрямую читаемым через QGIS. Огромное спасибо! Я использовал набор данных Мексики как хороший пример, потому что он был размером всего 9 КБ. Теперь займемся поиском и заменой для файла США @ 7,4 ГБ.
RyanKDalton

Извинения - у меня не было времени, чтобы продолжить, но к вашему сведению, вы можете открывать файлы GeoJSON непосредственно в QGIS - нет необходимости конвертировать в шейп-файл. Затем, если вам действительно нужен шейп-файл, вы можете экспортировать слой в этот формат (Layer-> Save As ...).
ЗПП

Первым делом я попытался открыть файлы в QGIS напрямую. Проблема заключалась в том, что все данные были «обернуты» в одну запись и, следовательно, в одну точку. Мне нужно было следовать инструкциям, которые вы оставили выше, чтобы QGIS распознал каждую отдельную функцию в наборе данных.
RyanKDalton

4

Большое спасибо @fod & @Sasa Ivetic за то, что поставили меня на правильный путь! Мне пришлось на некоторое время свернуть этот проект, но, наконец, я вернулся к нему сегодня и хотел поделиться своими результатами, чтобы выручить любого, кто, возможно, боролся с этим.

Используя информацию, предоставленную в ответе @ fod, я написал этот скрипт на Python для преобразования файлов дампа в «правильный» формат геоджонса. Этот скрипт py преобразует данные в формат, читаемый ogr2ogr, а затем вы можете преобразовать его в любой формат, какой захотите.

infile = sys.argv[1]
outfile = sys.argv[2]


## Prepare the input/output for read/write of files
fin = open(infile, 'r')
fout = open(outfile, 'w')


##Prepend the new file with approriate header info
fout.write('{"type":"FeatureCollection","features":[' + '\n')


## Read each line from the input and write to the output
for line in fin:
    ##write each line in the table, and replace carriage returns with "," + carriage return
    fout.write(line.replace("\n",",\n"))

##Append the new file with approriate footer info
fout.write(']}')

##Close the input and output files to release file locking
fin.close()
fout.close()

Примечание: у вас могут возникнуть проблемы с преобразованием преобразованных файлов geojson через ogr2ogr из-за ограничений памяти ОС. Взгляните на этот связанный вопрос: gis.stackexchange.com/questions/16307/…
RyanKDalton,

Большой ! Microsoft имеет ограничения памяти

1

Вы можете попробовать FME, чтобы сделать это. Он читает GeoJSON и пишет Shape и - что более важно - имеет набор «преобразователей» для обработки JSON (JSONExploder, JSONFlattener, JSONExtractor). Поэтому я думаю, что это поможет вывести контент в удобный для использования формат.

Также доступна бесплатная пробная версия!

NB: я работаю на Safe Software, производители FME.


Существуют ли примеры рабочих областей, в которых показано, как писать с геойсона в shp?
KFlaw
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.