Konwertowanie pliku GeoJSON z lokalizacji SimpleGeo na plik kształtów?

15

SimpleGeo niedawno udostępniło swój zestaw danych „Miejsc”, który jest WIELKI, ponieważ teraz możemy go używać do własnych celów, nawet offline. Zacząłem więc pobierać zestaw danych 2 GB , który zawiera spakowane pliki kraju w formacie GeoJSON.

Tutaj zaczyna się mój problem ... kiedy próbuję załadować plik kraju (* .geojson) bezpośrednio do QGIS lub nawet przekonwertować go do pliku shapefile przy użyciu ogr2ogr, uzyskuję tylko 1 punkt.

Najwyraźniej w tych plikach jest więcej danych, których nie mogę „zobaczyć” ani odzyskać, więc co robię źle? Czy ktoś może mi przekazać sugestie, jak zmienić te pliki w przydatne funkcje GIS?

Zaktualizowane pytanie: Naprawdę chcę przekonwertować plik geojson na plik shapefile (lub podobny standardowy format GIS) do użytku w oprogramowaniu GIS na komputery stacjonarne.

Fragment z bloga SimpleGeo z 1 sierpnia 2011 r . :

„Zestaw danych CC0 Places firmy SimpleGeo jest teraz dostępny do pobrania bez żadnych kosztów. Jeśli chcesz zdobyć ponad 21 milionów punktów POI obejmujących 63 kraje, jesteśmy gotowi przekazać je w jednym pliku. 2 GB w formacie .ZIP i pamiętaj, że dzięki licencji CC0 te dane stają się twoje - bezpłatne i jasne - aby robić wszystko, co chcesz. Mamy nadzieję, że robisz z nimi niesamowite rzeczy! Możesz je pobrać teraz, klikając tutaj ”.

Aktualizacja: 12 stycznia 2012: Po przejęciu SimpleGeo przez Urban Airship w październiku 2011 r., Urban Aiship powiedział: „uspokój dostępność obecnych wersji Miejsc, kontekstu i pamięci [SimpleGeo] w ciągu najbliższych kilku miesięcy.” ... Docelowym terminem oficjalnego wyciągnięcia wtyczki będzie 31 marca 2012 r. Link

RyanKDalton
źródło
3
+1. Słuchałem kiedyś Matta Galligana z SimpleGeo, który powiedział, że dane lokalizacyjne są faktem i powinny być swobodnie dostępne. To kontekst, który należy sprzedać. Dobrze widzieć, że „oni” mieli to na myśli. Chętnie wykorzystam te dane.
Erick,

Odpowiedzi:

10

Spróbuj opakować funkcje w następujący sposób:

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

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

]}

i oddzielając każdą funkcję przecinkiem.

Na przykład oto dwie pierwsze funkcje z zestawu danych 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/[email protected]", "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/[email protected]", "address": "78 Merrion Square", "owner": "simplegeo", "postcode": "Dublin2"}}

... a oto one jako 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/[email protected]", "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/[email protected]", "address": "78 Merrion Square", "owner": "simplegeo", "postcode": "Dublin2"}}
]}
fod
źródło
Po twoim opublikowaniu zdałem sobie sprawę, że tak naprawdę nie wyjaśniłem mojego pytania, więc je zredagowałem. Naprawdę chciałbym przekonwertować dane do pliku shapefile lub innego standardowego formatu GIS do użytku w stacjonarnym GIS. Przepraszam za źle sformułowane pytanie, ale dziękuję za odpowiedź @fod.
RyanKDalton,
2
odpowiedź foda doprowadzi cię w połowie drogi. Będziesz musiał wstępnie przetworzyć wszystkie te zrzuty, aby zawinąć funkcje w FeatureCollection zgodnie z zaleceniami FOD i oddzielić je przecinkami. Prostym sposobem na to jest zastąpienie wszystkich nowych linii znakiem, + nowy wiersz (tj. \ N przez, \ n), a następnie ujęcie w FeatureCollection, albo za pomocą skryptu, albo ręcznie za pomocą edytora tekstu. Po naprawieniu wszystkich plików, aby były poprawne GeoJSON, możesz użyć ogr2ogr v1.8.0 lub nowszego, aby przekonwertować GeoJSON na plik kształtu.
Sasa Ivetic
Doskonały! Nie zdawałem sobie sprawy, że to wystarczy, aby uczynić je „czytelnymi”. Korzystając z metody opisanej powyżej, byłem w stanie uczynić plik bezpośrednio czytelnym przez QGIS. Wielkie dzięki! Użyłem zestawu danych z Meksyku jako dobrej próbki, ponieważ miał on tylko rozmiar pliku 9k. Teraz do rozwiązania problemu „wyszukaj i zamień” dla pliku US @ 7,4 GB.
RyanKDalton
Przepraszam - nie miałem czasu na wcześniejsze sprawdzenie, ale FYI możesz otwierać pliki GeoJSON bezpośrednio w QGIS - nie trzeba konwertować na plik kształtu. Następnie, jeśli naprawdę chcesz plik kształtu, możesz wyeksportować warstwę w tym formacie (Warstwa-> Zapisz jako ...).
fod
Pierwszą rzeczą, którą próbowałem, było otwarcie plików w QGIS bezpośrednio. Problem polegał na tym, że wszystkie dane były „opakowane” w jednym rekordzie, a zatem w jednym punkcie. Musiałem postępować zgodnie z instrukcjami, które pozostawiłeś powyżej, aby QGIS rozpoznał każdą indywidualną funkcję w zestawie danych.
RyanKDalton
4

Bardzo dziękuję @fod i @Sasa Ivetic za umieszczenie mnie na właściwej drodze! Musiałem odłożyć ten projekt na jakiś czas, ale w końcu wróciłem do niego dzisiaj i chciałem przekazać moje wyniki, aby pomóc każdemu, kto mógł się z tym zmagać.

Korzystając z informacji podanych w odpowiedzi @ fod, napisałem ten skrypt Pythona do konwersji plików zrzutu w „prawidłowym” formacie geojson. Ten skrypt py konwertuje dane do formatu czytelnego dla ogr2ogr, a następnie możesz przekonwertować je na dowolny format, jaki chcesz.

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()
RyanKDalton
źródło
Uwaga: możesz napotkać problemy z konwersją przekonwertowanych plików geojson przez ogr2ogr, z powodu ograniczeń pamięci systemu operacyjnego. Spójrz na to pokrewne pytanie: gis.stackexchange.com/questions/16307/…
RyanKDalton,
Wspaniały ! Microsoft ma ograniczenia pamięci
1

Możesz spróbować zrobić to w FME . Czyta GeoJSON i pisze Shape oraz - co ważniejsze - ma kilka „transformatorów” do obsługi JSON (JSONExploder, JSONFlattener, JSONExtractor). Myślę więc, że pomogłoby to udostępnić zawartość w użytecznym formacie.

Ma również bezpłatny okres próbny!

NB: Pracuję dla Safe Software, twórców FME.

Mark Ireland
źródło
czy są jakieś przykładowe obszary robocze, które pokazują, jak pisać z geojson do shp?
kflaw