Convertendo entre o formato KML e shapefile (SHP)?

97

Meus usuários estão me enviando dados de pontos que foram digitalizados usando o Google Earth.

Como posso converter o KML deles em um shapefile?

TroutSlayer
fonte

Respostas:

129

Usando o código aberto ogr2ogrdo GDAL / OGR :

ogr2ogr -f 'ESRI Shapefile' output.shp input.kml

Conforme observado no comentário do grego abaixo , pode ser necessário usar aspas duplas em vez de aspas simples para a opção de formato de saída (por exemplo, "ESRI Shapefile" para a linha de comando do Windows). Veja também o wiki da gdal .

fmark
fonte
20
... e apenas para antecipar próxima pergunta natural, que funciona de outra maneira também: ogr2ogr -f KML output.kml input.shp
glennon
8
Se você preferir usar ferramentas baseadas em GUI, o QGIS poderá atuar como um front end para ogr2ogr.
Underdark
1
gostaria que houvesse um site on-line GDAL / OGR dica dica peeps
Pure.Krome 5/11
1
@mattwilkie Acho que ele quis dizer algo como Zamzar.com. Um serviço de conversão online.
RK
1
Eu tive que usar aspas duplas para o argumento "ESRI Shapefile".
precisa saber é o seguinte
30

O ArcGIS 10 possui uma ferramenta GP chamada KML To Layer que converte KML em uma classe de recurso. Pesquise KML usando a nova pesquisa. Usei isso para pegar os feeds de kml de derramamento de óleo do Google e convertê-los em SHP.

O KML To Layer pode criar apenas uma classe de recurso de geodatabase, que precisa ser seguida por uma etapa Feature Class To Feature Class para convertê-lo em um shapefile.

jiriteach
fonte
2
A ferramenta mencionada aqui parece ser KML To Layer, mas que só pode criar uma classe de recurso de geodatabase que precisa ser seguida pela etapa Feature Class To Feature Class para convertê-lo em um shapefile.
PolyGeo
19

Use ogr2ogr, mas se você não estiver interessado em uma linha de comando, tente ogr2gui - um front end realmente simples para ogr2ogr.

om_henners
fonte
10

Para usar dados espaciais publicados como um arquivo KML ou KMZ no ArcGIS, você deve primeiro converter o KML em uma classe de recurso (shapefile). A Universidade de Connecticut publicou um script para criar shapefiles a partir do KML chamado KML_to_Shp.tbx. Funciona muito bem e você pode usá-lo no ArcToolbox. Como o KML (sempre) deve estar sempre em coordenadas geográficas (WGS84), você poderá transformá-las na Zona 15TM NAD83 da UTM ...

Como em todas as novas ferramentas, revise a documentação antes de usar. Isso pode ser encontrado no site do Centro de Educação e Pesquisa do Uso da Terra da UCONN. Depois de adicioná-lo à sua caixa de ferramentas e entender suas limitações, a ferramenta é muito simples de usar.

http://clear.uconn.edu/tools/kml_to_shp/index.htm

TroutSlayer
fonte
3
Você nem sempre deseja a Zona UTM 15N NAD83, deseja a zona adequada para os dados. E você também pode projetar usando WGS84 (ie, WGS84 não significa Latlon)
Vinko Vrsalovic
10

Mais um produto comercial que vale a pena mencionar é o Global Mapper . Isso se enquadra na categoria de visualização, conversão, reprojeção de quase todos os dados geográficos que você possa imaginar. Eu uso muito a versão gratuita em uma aula que ensino e quase todo mundo sai comentando sobre como esse é o canivete suíço das ferramentas GIS (embora a versão gratuita não faça traduções, ela expõe todos os menus e opções). Vale a pena o custo na minha experiência.

Dennis
fonte
10

Par mais opções, além das outras respostas ...

O aplicativo fdo2fdo do SL-King , que usa as bibliotecas FDO de código aberto, permite executar KML para SHP e traduções vice-versa. Ele inclui uma GUI (que expressa traduções de formato para formato e traduções de mapeamento de esquema mais personalizadas), além de uma ferramenta de linha de comando.

Para aplicativos adequados, o FME da Safe Software oferece um controle incrível sobre como você mapeia as informações de origem no destino. Se você possui o ArcGIS, pode acessá-lo através da Data Interoperability Extension ( lista de formatos ) a um custo adicional.

Se eles são apenas recursos pontuais sem atributos, eu consideraria analisar o XML em algo que você possa importar facilmente como um CSV; você está apenas procurando os dados entre as tags de coordenadas.

JasonBirch
fonte
9

Outra opção é usar o XToolsPro, uma extensão de terceiros que funciona no ArcGIS. Entre suas muitas ferramentas úteis de conversão, está a função "Importar dados do KML".

Pure.Krome
fonte
8

Existem também outros produtos comerciais. Arc2Earth vem à mente. Ele tem uma integração muito boa com o ArcGIS Desktop. http://www.arc2earth.com

Jason
fonte
8

O QGIS se tornou muito mais robusto para a conversão entre kml e shp. Basta usar o Save As no menu do botão direito na camada. Ou abra cada um desses tipos de arquivo no menu Adicionar nova camada, altere o tipo de arquivo na caixa de diálogo.

Willy
fonte
6

Você também pode consultar o FME em Safe Software http://www.safe.com

Há um teste de 14 dias disponível. O FME permite mapear os atributos do seu arquivo KML para o formato ESRI SHP durante o processo de conversão / migração de dados, além da capacidade de filtrar os arquivos de pontos KML com base em determinados atributos ou extensões espaciais.

Também há a opção de fazer a conversão em lote quando você tiver um grande conjunto de arquivos KML de seus usuários.

~ SRG

SRG
fonte
6

usar o OGR para o controle da linha de comando, o Google Earth Pro fornecerá uma maneira gráfica de converter, assim como uma variedade de outros aplicativos


fonte
5

O ET GeoWizards também possui uma opção de importação do Google Earth, que converterá arquivos KML ou KMZ em classe de recurso. > http://www.ian-ko.com/ET_GeoWizards/gw_MainFeatures.htm

Se você está procurando uma opção de código aberto, vejo que o MapWindow acabou de ser atualizado e existem alguns plugins para converter de e para KML e shapefile.

Don Meltz
fonte
4

Se você possui a extensão de interoperabilidade, carregue esse KML diretamente no ArcMap e exporte para shp.

Embora a resposta oposta ao seu Q, caso alguém tenha vindo aqui para fazer o vice-versa, acho esse script perfeito para ir de SHP -> KML http://arcscripts.esri.com/details.asp?dbid=14273

Simon
fonte
3

Algumas opções que não encontrei em nenhuma das respostas para adicionar recursos adicionais para a conversão de KML em SHP seriam as seguintes:

MyGeodata Converter

O conversor online do formato Keyhole Markup Language para o formato ESRI Shapefile (KML para SHP) é uma ferramenta rápida e fácil de usar para conversões individuais e em lote. O Converter também suporta mais de 90 outros formatos GIS / CAD de vetores e rasters e mais de 3.000 sistemas de referência de coordenadas.

O Free Geography Tools cobre e fornece um tutorial da ferramenta Zonums Software

whyzar
fonte
2

Uma ajuda boa e fácil que pode produzir resultados mais limpos é converter o KML para o GPX primeiro (existem vários softwares de código aberto que podem fazê-lo) e abrir os respectivos dados (o GPX possui 5 classes diferentes de informações: pontos de referência, pontos de controle, Pontos de rota, trilhas e rotas) usando o ogr2ogr de GDAL / OGR no QGIS e salve-o diretamente no formato de arquivo .SHP.

Também é fácil usar o processo em lote para grande quantidade de dados (usando as Merge Vector Layers da SAGA, por exemplo) para produzir um arquivo de forma única, se desejado, e você também pode limpar os atributos vazios antes do final "Save as SHP".

Tome especial atenção ao sistema de codificação se caracteres estranhos aparecerem no resultado final ... você pode escolher o correto no momento em que estiver adicionando novos dados vetoriais ao seu mapa.

Ricardo M. Nogueira Mendes
fonte
0

Estou atrasado para a festa, mas aqui estão algumas maneiras extras:

  1. Com o Google Fusion Tables , ele pode converter informações de pontos KML em WGS84 X e Y em um formato .csv, que você pode usar no seu software de análise GIS preferido.

  2. Usando o pacote rgdal no R .:

    install.packages("rgdal")
    library(rgdal) #load package
    kmlfile=readOGR("yourkmlfilehere.kml") #load KML
    writeOGR(kmlfile,"yourshapepath",layer="shapename", driver="ESRI Shapefile") #save shape
Richard N. Belcher
fonte
0

Outra dica: se você deseja converter vários KMLs em uma pasta / diretório de uma vez para shapefile usando a linha de comando, abra o cmd na pasta e digite:

para / R% f em (* .kml) faça ogr2ogr -f "ESRI Shapefile" "% ~ dpnf.shp" "% f"

Nota: Ele usará o nome do KML como o nome do shapefile, para garantir que seus KMLs tenham os formatos de nomenclatura adequados para os shapefiles. O shapefile será criado no mesmo diretório que o kml correspondente. Os KMLs nos subdiretórios também serão convertidos em shapefiles.

Ifeoma Collins
fonte
-1

Para converter o formato de arquivo KML para Shp, você pode usar o utilitário ogr2ogr. Primeiro, você precisa instalá-lo no sistema. Se você já o instalou, digite ogr2ogr no terminal.

Agora, para a conversão, o comando fornecido precisa ser executado, ou seja,

--- ogr2ogr -f 'ESRI Shapefile' Output_sahpefile.shp Input_KML.kml

É assim que as conversões podem ser feitas pelo ogr2ogr e, se você não estiver obtendo resultados, poderá converter Kml em shp pelo método de codificação.

isso também pode ser feito usando PHP. Você pode criar uma função que definiu esse comando como string e pode fornecer essa string no método shell_exec () para executar. Shell_exec () realmente executa o comando e retorna a saída como string.

public function KML_to_shp($KMLfilepath,$output){
 $query="ogr2ogr -f 'ESRI Shapefile'  $output.gml  $KMLfilepath";
 shell_exec($query);
 }

Aqui está um post para converter kml para shp usando a ferramenta de linha de comando ogr2ogr ou usando o código php. Enquanto se você usa a ferramenta QGIS, pode consultar uma das minhas postagens aqui kml para shp convert usando QGIS ou então continuar usando esta postagem.

Himanshu Patel
fonte
1
você está associado ao site que está oferecendo como resposta? Em caso afirmativo, indique-o em suas postagens.
LaughU
-2

No ArcGIS, basta procurar "kml TO LAYER" ou "Layer to KML". essa ferramenta ajudará você a converter em shapefile e KML

Naseem Ahmad
fonte
Eu acho que essa abordagem foi mencionada anteriormente por outro autor. Como alternativa, você pode sugerir algo novo ou aprimorado.
Taras