He convertido un archivo de forma con atributos a un .kml para un cliente. El .kml y los atributos se editaron en google earth. Recibí el .kml actualizado y ahora necesito regresarlo a .shp. El problema es: todos mis atributos están ahora en formato html, lo que hace que el cuadro de información emergente en Google Earth. Cuando intento convertir de nuevo a .shp, mis atributos se agrupan en un campo "Descripción" (creado por Google). Y TODOS mis atributos e información se agrupan en una sola celda. ¿Hay alguna forma de extraer los datos del campo "Descripción"? Incluso si hago eso, ¿hay una manera fácil de deshacerse del formato html y hacerlo utilizable?
Esto es lo que obtengo usando el método de "Tabla de Fusión" que encontré en algunos foros. Puede ver el html a la izquierda, continúa más allá de lo que muestra.
Estoy usando ArcGIS Desktop 10.2.
fuente
Respuestas:
Acabo de confirmar que una herramienta ETL espacial creada con la extensión de interoperabilidad de datos devolverá los atributos de su archivo KML / KMZ a un archivo de forma con el esquema intacto. Simplemente seleccione la opción Esquema dinámico en el asistente de creación de herramientas:
una solución sería analizar el campo de descripción de los valores de los diversos campos de atributos que necesita y copiarlos en los campos apropiados. Y la próxima vez, haga que su cliente agregue atributos en una hoja de cálculo de Excel o algo así para que pueda volver a unirlo a su shapefile para actualizarlo.
fuente
Primero tuve que abrir el kml en QGIS y guardarlo como un shapefile y mantuvo los atributos. En QGIS, Agregue datos vectoriales y, en Examinar, configure los archivos de tipo en "Lenguaje de marcado de ojo de cerradura (KML)" Busque el KML que desea importar, luego haga clic en Abrir. Guarde los objetos importados de KML en un Shapefile. Al importar el shapefile en ArcMap, verá todos los atributos mantenidos.
fuente
Esta herramienta, Exportar a KML desarrollada por Kevin Martin hace el trabajo.
Hay algunos problemas con los estilos, pero al menos los colores y los atributos son correctos, y hay muchas opciones para jugar con los atributos, etiquetas, etc.
fuente
Solo necesitaba uno de los campos, que contenía una cadena de fecha. Usando arcMap, pude resolver esto usando la calculadora de campo para extraerlo. Si solo necesita extraer un par de campos, esto puede funcionar para usted, aunque sea un poco tedioso:
Los siguientes pasos lo ayudarán a construir una línea de VB para usar en la calculadora de campo para cortar una subcadena del campo de descripción en función de las etiquetas HTML y la cantidad de datos almacenados en su tabla.
En arcMap, agregue un nuevo campo TEXTO a su capa y asegúrese de darle al menos tantos caracteres como necesite para sus datos. El valor predeterminado es 50.
Luego, abra la calculadora de campo para su nuevo campo. El inicio de los datos se encuentra usando la función InStr (), y los datos se extraen usando la función Mid (). Escriba el siguiente comando VB:
Mid([PopupInfo],InStr([PopupInfo],"DATE")+15,19)
Por supuesto, cambie los nombres de mis campos por los suyos (de los pasos 3 y 6) y cambie la longitud de los números 15 y 19 a la longitud de sus subcadenas (que se encuentran en los pasos 7 y 8).
En la línea VB anterior:
fuente
Aquí hay una guía que encontré que lo guía a través de algunos pasos usando ArcMap, Google Drive Fusion Tables y MS Excel para convertir archivos KML a archivos .shp mientras conserva los atributos.
Enlace al sitio que tiene la guía .
fuente
He podido hacer que esto funcione usando cursores y listas para dividir el campo XML PopupInfo en valores útiles
use el KML de arcpy para la herramienta de capas y las herramientas de proyecto para ingresar al sistema de coordenadas deseado (me encontré con problemas para agregar campos a la salida de conversión original, lo que puede deberse al archivo de capa asociado con él)
Use .da.SearchCursor para obtener la cadena PopupInfo de la primera fila. Luego, divídalo en una lista basada en '<', elimine los dos primeros valores (el campo de etiqueta de Google Earth) y coloque los valores restantes que tienen la etiqueta 'td>' pero no la etiqueta de cierre 'td>' en una nueva lista de nombres de campo (índices pares) y valores de campo (índices impares)
Recorra la lista de nombres de campo con arcpy.AddField_management para agregar todos los campos (omita si ya existen)
Use .da.UpdateCursor para obtener PopupInfo para todas las filas, luego divida y cree nuevas listas al igual que con el cursor de búsqueda
esta vez, use todos los valores de índice impares para actualizar las filas (si i% 2 <> 0: fila [(i-1) / 2] = lista [i]) y luego cursor.updateRow (fila)
fuente
bugmenot123 ya lo mencionó, pero ogr2ogr puede convertir entre shapefiles y kml.
¿Conversión entre KML y formato de archivo de forma (SHP)? cubre cómo convertir entre los dos.
fuente
ACTUALIZACIÓN: si te encuentras con este hilo con el mismo problema, ¡hay una herramienta para ti! Echa un vistazo a https://mygeodata.cloud/
Yo trabajo muy bien Pude subir mi KML y el archivo de forma exportado tenía todos mis atributos correctamente en sus propios campos. El único inconveniente es que hay un número limitado de conversiones "gratuitas".
fuente
Todavía no hay una solución simple para este problema de conversión. Se ha preguntado aquí varias veces en los últimos años:
kml-en-qgis-con-datos-adicionales
preservar-atributos-durante-kml2shp-conversion-in-arcgis-for-desktop
convertir-kml-a-archivo-forma-sin-perder-atributo-datos
Explicación de esri para su herramienta de conversión KmltoLayer:
"Como 'propietario' de la herramienta KML en Esri puedo decir: Los elementos ExtendedData dentro de un KML no se traducirán en atributos de campo cuando se use la herramienta KML to Layer con ArcGIS en cualquier versión (9.3-10.3). Esto incluye ArcMap en Windows o ArcGIS Server en Linux. Hay una solicitud de mejora para admitir esto que estamos considerando para una versión futura ".
fuente