Convertendo o arquivo GeoJSON do SimpleGeo Places em shapefile?


15

A SimpleGeo recentemente disponibilizou seu conjunto de dados "Lugares" GRANDE, pois agora podemos usá-lo para nossos próprios propósitos, mesmo offline. Então, eu baixei o conjunto de dados de 2 GB , que contém arquivos de países compactados no formato GeoJSON.

Aqui é onde meu problema começa ... quando tento carregar um arquivo de país (* .geojson) diretamente no QGIS ou mesmo convertê-lo em shapefile usando ogr2ogr, acabo com apenas um recurso de ponto.

Claramente, há mais dados disponíveis nesses arquivos que não consigo "ver" ou recuperar, então o que estou fazendo de errado? Alguém pode me dar alguma sugestão sobre como transformar esses arquivos em recursos GIS utilizáveis?

Pergunta atualizada: Eu realmente quero converter o arquivo geojson em um shapefile (ou formato GIS padrão semelhante) para uso em um software GIS de desktop.

Snippet do blog SimpleGeo em 1 de agosto de 2011 :

"O conjunto de dados CC0 Places do SimpleGeo agora está disponível para download sem nenhum custo. Se você deseja obter mais de 21 milhões de POIs que cobrem 63 países, estamos prontos para entregá-lo a você em um arquivo. O arquivo é sobre 2 GB no formato .ZIP, e lembre-se, com a licença CC0, esses dados se tornam seus - gratuitos e claros - para fazer o que você quiser. Esperamos que você faça coisas incríveis com ele! Você pode baixá-lo agora clicando aqui. "

Atualização: 12 de janeiro de 2012: Depois que o SimpleGeo foi adquirido pela Urban Airship em outubro de 2011, o Urban Aiship disse que “diminuiu a disponibilidade das versões atuais dos Locais, Contexto e Armazenamento da [SimpleGeo] nos próximos meses.” ... A data prevista para desligar oficialmente será 31 de março de 2012. Link


3
+1. Ouviu Matt Galligan, da SimpleGeo, em algum momento atrás, dizendo que os dados de localização são uma questão de fato e devem estar disponíveis gratuitamente. É o contexto que deve ser vendido. É bom ver 'eles' significavam isso. Também ansioso para aproveitar esses dados.
Erick

Respostas:


10

Tente agrupar os recursos da seguinte maneira:

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

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

]}

e separando cada recurso com uma vírgula.

Por exemplo, aqui estão os dois primeiros recursos do conjunto de dados do 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"}}

... e aqui estão elas como uma coleção de recursos do 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"}}
]}

Após sua postagem, percebi que realmente não deixei minha pergunta clara, então a editei. Eu realmente gostaria de converter os dados em shapefile ou outro formato GIS padrão para uso em um GIS de desktop. Desculpe pela pergunta mal formulada, mas obrigado pela resposta @fod.
precisa saber é o seguinte

2
A resposta de fod o levará até a metade do caminho. Você precisará pré-processar todos esses dumps para agrupar os recursos em uma FeatureCollection, conforme sugerido, e separá-los com vírgulas. A maneira mais fácil de fazer isso é substituir todas as novas linhas por uma, + nova linha (por exemplo, \ n com, \ n) e, em seguida, incluir no FeatureCollection, por meio de um script ou manualmente por um editor de texto. Depois de corrigir todos os arquivos para serem GeoJSON adequados, você poderá usar ogr2ogr v1.8.0 ou posterior para converter GeoJSON em shapefile.
Sasa Ivetic

Excelente! Não percebi que isso seria necessário para torná-los "legíveis". Usando o método descrito acima, consegui tornar o arquivo legível diretamente via QGIS. Muitíssimo obrigado! Usei o conjunto de dados do México como uma boa amostra, porque tinha apenas 9k de tamanho de arquivo. Agora, para resolver "pesquisar e substituir" pelo arquivo dos EUA a 7,4 GB.
precisa saber é o seguinte

Desculpas - não tive tempo de acompanhar mais cedo, mas, para sua informação, você pode abrir arquivos GeoJSON diretamente no QGIS - não há necessidade de converter para shapefile. Então, se você realmente deseja um shapefile, pode exportar a camada nesse formato (Camada-> Salvar como ...).
fod

A primeira coisa que tentei foi abrir os arquivos no QGIS diretamente. O problema era que todos os dados foram "agrupados" em um registro e, portanto, em um ponto. Eu precisava seguir as instruções que você deixou acima para que o QGIS reconhecesse cada recurso individual no conjunto de dados.
precisa saber é o seguinte

4

Muito obrigado a @fod e @Sasa Ivetic por me colocarem no caminho certo! Eu tive que adiar esse projeto por um tempo, mas finalmente voltei a ele hoje e queria passar meus resultados para ajudar qualquer pessoa que tenha lutado com isso.

Usando as informações fornecidas na resposta do @ fod, escrevi esse script Python para converter os arquivos de despejo no formato geojson "adequado". Esse script py converterá os dados em formato legível por ogr2ogr, e você poderá convertê-los para o formato que desejar.

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

Nota: você pode ter problemas para converter os arquivos geojson convertidos via ogr2ogr, devido a limitações de memória do sistema operacional. Dê uma olhada nesta questão relacionada: gis.stackexchange.com/questions/16307/…
RyanKDalton

Ótimo ! A Microsoft tem limitações de memória

1

Você pode tentar o FME para fazer isso. Ele lê GeoJSON e escreve Shape e - mais importante - possui vários "transformadores" para manipular JSON (JSONExploder, JSONFlattener, JSONExtractor). Então, acho que ajudaria a colocar o conteúdo em um formato utilizável.

Ele também tem uma avaliação gratuita disponível!

NB: Trabalho para a Safe Software, fabricante de FME.


existem alguns espaços de trabalho de exemplo que mostram como escrever de geojson para shp?
kflaw
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.