Mengonversi file GeoJSON Places SimpleGeo ke shapefile?


15

SimpleGeo baru-baru ini membuat set data "Tempat" mereka tersedia secara gratis yang HEBAT, karena sekarang kita dapat menggunakannya untuk keperluan kita sendiri, bahkan offline. Jadi saya melanjutkan mengunduh dataset 2GB , yang berisi file zip negara dalam format GeoJSON.

Di sinilah masalah saya mulai ... ketika saya mencoba memuat file negara (* .geojson) langsung ke QGIS atau bahkan mengubahnya menjadi shapefile menggunakan ogr2ogr, saya berakhir dengan fitur hanya 1 poin.

Jelas ada lebih banyak data yang tersedia di file-file ini yang saya tidak dapat "melihat" atau mengambil, jadi apa yang saya lakukan salah? Dapatkah seseorang memberi saya saran tentang cara mengubah file-file ini menjadi fitur GIS yang bisa digunakan?

Pertanyaan yang Diperbarui: Saya benar-benar ingin mengubah file geojson menjadi shapefile (atau format GIS standar serupa) untuk digunakan dalam perangkat lunak GIS desktop.

Cuplikan dari blog SimpleGeo pada 1 Agustus 2011 :

"Kumpulan data CC0 dari SimpleGeo sekarang tersedia untuk diunduh tanpa biaya. Jika Anda ingin mendapatkan 21 juta + POI yang mencakup 63 negara, kami siap untuk menyerahkannya kepada Anda dalam satu file. File ini tentang 2GB dalam format .ZIP, dan ingat, dengan lisensi CC0, data ini menjadi milik Anda - gratis dan jelas - untuk melakukan apa pun yang Anda inginkan. Kami harap Anda melakukan hal-hal luar biasa dengannya! Anda dapat mengunduhnya sekarang dengan mengklik di sini. "

Pembaruan: 12 Januari 2012: Setelah SimpleGeo diakuisisi oleh Urban Airship pada Oktober 2011, Urban Aiship mengatakan, “kurangi ketersediaan tempat, Konteks, dan Penyimpanan [SimpleGeo] saat ini dalam beberapa bulan ke depan.” ... Tanggal target untuk menarik steker secara resmi adalah 31 Maret 2012. Tautan


3
+1. Mendengarkan Matt Galligan dari SimpleGeo kadang-kadang kembali mengatakan data lokasi adalah masalah fakta dan harus tersedia secara bebas. Ini adalah konteks yang harus dijual. Senang melihat 'mereka' bersungguh-sungguh. Juga ingin memanfaatkan data ini.
Erick

Jawaban:


10

Coba bungkus fitur-fiturnya sebagai berikut:

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

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

]}

dan memisahkan setiap fitur dengan koma.

Misalnya, inilah dua fitur pertama dari dataset 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"}}

... dan di sini mereka adalah sebagai Fitur GeoJSON:

{"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"}}
]}

Setelah posting Anda, saya menyadari bahwa saya benar-benar tidak menjelaskan pertanyaan saya jadi saya mengeditnya. Saya benar-benar ingin mengonversi data ke shapefile atau format GIS standar lainnya untuk digunakan dalam GIS desktop. Maaf untuk pertanyaan dengan kata-kata yang buruk tetapi terima kasih atas jawabannya @fod.
RyanKDalton

2
jawaban fod akan membuat Anda setengah jalan di sana. Anda perlu melakukan pra-proses semua dump ini untuk membungkus fitur-fitur dalam FeatureCollection seperti yang disarankan, dan pisahkan dengan koma. Cara mudah untuk melakukannya adalah mengganti semua baris baru dengan, + baris baru (yaitu \ n dengan, \ n), dan kemudian lampirkan di FeatureCollection, baik melalui skrip, atau secara manual dengan editor teks. Setelah Anda memperbaiki semua file menjadi GeoJSON yang tepat, maka Anda dapat menggunakan ogr2ogr v1.8.0 atau yang lebih baru untuk mengonversi GeoJSON menjadi shapefile.
Sasa Ivetic

Luar biasa! Saya tidak menyadari inilah yang diperlukan untuk membuat mereka "mudah dibaca". Menggunakan metode yang dijelaskan di atas, saya dapat membuat file langsung dapat dibaca melalui QGIS. Terima kasih banyak! Saya menggunakan dataset Meksiko sebagai sampel yang baik, karena hanya berukuran 9k. Sekarang untuk mengatasi "cari & ganti" untuk file AS @ 7,4 GB.
RyanKDalton

Permintaan maaf - Saya tidak punya waktu untuk menindaklanjuti lebih cepat tetapi FYI Anda dapat membuka file GeoJSON langsung di QGIS - tidak perlu mengkonversi ke shapefile. Kemudian, jika Anda benar-benar menginginkan shapefile, Anda dapat mengekspor layer dalam format itu (Layer-> Save As ...).
fod

Hal pertama yang saya coba adalah membuka file di QGIS secara langsung. Masalahnya adalah bahwa semua data "dibungkus" dalam satu catatan, dan karenanya satu poin. Saya perlu mengikuti instruksi yang Anda tinggalkan di atas agar QGIS mengenali setiap fitur individu dalam dataset.
RyanKDalton

4

Terima kasih banyak kepada @fod & @Sasa Ivetic karena menempatkan saya di jalur yang benar! Saya harus meletakkan proyek ini untuk sementara waktu tetapi akhirnya kembali ke sana hari ini dan ingin membagikan hasil saya untuk membantu orang lain yang mungkin telah berjuang dengan ini.

Menggunakan informasi yang mereka berikan dalam jawaban @ fod, saya menulis skrip Python ini untuk mengonversi file dump dalam format geojson yang "tepat". Skrip py ini akan mengonversi data menjadi format yang dapat dibaca oleh ogr2ogr, lalu Anda dapat mengonversinya menjadi format apa pun yang Anda inginkan.

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()

Catatan: Anda mungkin mengalami masalah saat mengonversi file geojson yang dikonversi melalui ogr2ogr, karena keterbatasan memori OS. Lihatlah pertanyaan terkait ini: gis.stackexchange.com/questions/16307/…
RyanKDalton

Bagus ! Microsoft memiliki keterbatasan memori

1

Anda dapat mencoba FME untuk melakukan ini. Bunyinya GeoJSON dan menulis Shape dan - yang lebih penting - memiliki banyak "transformer" untuk menangani JSON (JSONExploder, JSONFlattener, JSONExtractor). Jadi saya pikir itu akan membantu untuk mengeluarkan konten ke dalam format yang dapat digunakan.

Ini juga memiliki uji coba gratis yang tersedia!

NB: Saya bekerja untuk Perangkat Lunak Aman, pembuat FME.


apakah ada beberapa ruang kerja sampel yang menunjukkan cara menulis dari geojson ke shp?
kflaw
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.