Eu converti um shapefile com atributos para um .kml para um cliente. O .kml e os atributos foram editados no google earth. Recebi o .kml atualizado e agora preciso recuperá-lo .shp. O problema é: todos os meus atributos agora estão no formato html, o que torna a caixa de informações pop-up no google earth. Quando tento converter de volta para .shp, meus atributos são agrupados em um campo "Descrição" (criado pelo Google). E TODOS os meus atributos e informações são agrupados em uma única célula. Existe alguma maneira de extrair os dados do campo "Descrição". Mesmo se eu fizer isso, existe uma maneira fácil de se livrar do formato html e torná-lo utilizável?
É isso que recebo usando o método "Fusion Table" que encontrei em alguns fóruns. Você pode ver o html à esquerda, ele continua além do que mostra.
Estou usando o ArcGIS Desktop 10.2.
fonte
Respostas:
Acabei de confirmar que uma ferramenta ETL espacial criada usando a extensão de interoperabilidade de dados trará os atributos do seu arquivo KML / KMZ de volta para um shapefile com o esquema intacto. Basta selecionar a opção Esquema dinâmico no assistente de criação de ferramentas:
uma solução alternativa seria analisar o campo de descrição dos valores dos vários campos de atributos necessários e copiá-los nos campos apropriados. E da próxima vez, peça ao seu cliente para adicionar atributos em uma planilha do Excel ou algo assim, para que você possa juntá-lo novamente ao seu shapefile para atualização.
fonte
Eu tive que abrir o kml no QGIS primeiro e salvar como um shapefile e ele manteve os atributos. No QGIS, adicione dados vetoriais e, em Procurar, defina os arquivos do tipo como "Keyhole Markup Language (KML)". Navegue até o KML que deseja importar e clique em Abrir. Salve os objetos importados do KML em um Shapefile. Ao importar o shapefile no ArcMap, você verá todos os atributos mantidos.
fonte
Essa ferramenta, Exportar para KML, desenvolvida por Kevin Martin, faz o trabalho.
Existem alguns problemas com os estilos, mas pelo menos cores e atributos estão corretos, e há muitas opções para brincar com os atributos, rótulos, etc.
fonte
Eu só precisava de um dos campos, que continha uma sequência de datas. Usando o arcMap, consegui resolver isso usando a calculadora de campo para extraí-lo. Se você precisar extrair apenas alguns campos, isso pode funcionar para você, embora um pouco entediante:
As etapas a seguir ajudarão você a criar uma linha de VB para usar na calculadora de campo para cortar uma sub-string do campo de descrição com base nas tags HTML e na quantidade de dados armazenados em sua tabela.
No arcMap, adicione um novo campo TEXTO à sua camada e certifique-se de fornecer pelo menos quantos caracteres você precisará para seus dados. O padrão é 50.
Em seguida, abra a calculadora de campo para o seu novo campo. O início dos dados é encontrado usando a função InStr () e os dados são extraídos usando a função Mid (). Digite o seguinte comando VB:
Mid([PopupInfo],InStr([PopupInfo],"DATE")+15,19)
Obviamente, troque meus nomes de campo pelos seus (das etapas 3 e 6) e altere o comprimento dos números 15 e 19 para o comprimento das substrings (encontradas nas etapas 7 e 8).
Na linha VB acima:
fonte
Aqui está um guia que eu descobri que mostra algumas etapas usando o ArcMap, o Google Drive Fusion Tables e o MS Excel para converter arquivos KML em arquivos .shp, preservando os atributos.
Link para o site que possui o guia .
fonte
Consegui fazer isso funcionar usando cursores e listas para dividir o campo xml PopupInfo em valores úteis
use o KML arcpy para colocar a ferramenta em camadas e as ferramentas de projeto para acessar o sistema de coordenadas desejado (tive problemas ao adicionar campos à saída de conversão original, o que pode ser devido ao arquivo de camada associado a ela)
Use .da.SearchCursor para obter a seqüência de caracteres PopupInfo da primeira linha. Em seguida, divida-o em uma lista baseada em '<', exclua os dois primeiros valores (o campo de marcador do Google Earth) e coloque os valores restantes que possuem a tag 'td>', mas não a tag de fechamento 'td>' em uma nova lista de nomes de campos (índices pares) e valores de campos (índices ímpares)
Percorra a lista de nomes de campos com arcpy.AddField_management para adicionar todos os campos (pule se eles já existirem)
Use .da.UpdateCursor para obter PopupInfo para todas as linhas, depois divida e crie novas listas, como no cursor de pesquisa
dessa vez, use todos os valores de índice ímpares para atualizar linhas (se i% 2 <> 0: linha [(i-1) / 2] = lista [i]) e, em seguida, cursor.updateRow (linha)
fonte
bugmenot123 já o mencionou, mas ogr2ogr pode converter entre shapefiles e kml.
Convertendo entre o formato KML e shapefile (SHP)? aborda como converter entre os dois.
fonte
ATUALIZAÇÃO: se você encontrar esse tópico com o mesmo problema, existe uma ferramenta disponível para você! Confira https://mygeodata.cloud/
Eu trabalho muito bem. Consegui fazer upload do meu KML e o shapefile exportado tinha todos os meus atributos corretamente em seus próprios campos. A única desvantagem é que há um número limitado de conversões "gratuitas".
fonte
Ainda não há uma solução simples para esse problema de conversão. Foi solicitado aqui várias vezes nos últimos anos:
kml-in-qgis-com-dados-adicionais
preservando-atributos-durante-kml2shp-conversão-em-arcgis-para-desktop
converter-kml-para-shapefile-sem-perder-atributo-dados
A explicação da esri para a ferramenta de conversão KmltoLayer:
"Como o 'proprietário' da ferramenta KML da Esri, posso dizer: Os elementos ExtendedData dentro de um KML não serão convertidos em atributos de campo ao usar a ferramenta KML to Layer com o ArcGIS em qualquer versão (9.3-10.3). Isso inclui o ArcMap em Windows ou ArcGIS Server no Linux. Há uma solicitação de aprimoramento para dar suporte a isso, que estamos considerando para uma versão futura. "
fonte