QGIS를 사용하여 속성을 잃지 않고 KML을 shapefile로 변환 하시겠습니까?


29

수백 개의 포인트가있는 KML 파일이 있습니다. 각 지점에는 이름, 전력, 나이 (수력 발전 플랜트의 맵)와 같은 정보가 있습니다. 해당 KML 파일을 QGIS로 가져 오면이 정보가 손실됩니다.

이 정보를 유지할 수있는 방법이 있습니까?

정보는 다음과 같습니다.

<ExtendedData>
 <SchemaData schemaUrl="#vorlage">
  <SimpleData name="Name">Test</SimpleData>
  <SimpleData name="Power">10895</SimpleData>
  <SimpleData name="Location">L</SimpleData>
 </SchemaData>
</ExtendedData>

내 코드에 문제가 있습니까?


1
.kmlQGIS로 가져 오는 방법은 무엇입니까? 이 형식은 기본 형식 중 하나로 지원되므로 kml파일을 레이어로 추가하는 것은 비교적 쉬운 과정 입니다. 더 자세한 정보를 제공하면 누군가가 무엇이 잘못되었는지 파악할 수 있습니다. 또한 파일 소스에 대한 정보가 유용 할 수 있습니다.
공간을 얻으십시오

1
kml에 대한 라이브 링크가 있습니까?
Mapperz

FME를 통해 가능하다고 생각하거나 약간의 출현을 느끼면 kml (xml!)을 구문 분석하고 shapefile로 내보낼 파이썬 스크립트를 작성할 수 있습니다. (사용할 라이브러리 : python shapefile 라이브러리, python의 모든 XML)
U2ros

2
RK 예, 저것을 봤습니다. 만족스러운 해결책이 없기 때문에 문제에 대한 더 나은 설명으로 새로운 질문을하기로 결정했지만. 또한 시도의 또 다른 원 후에 문제는 습지 KML 파일이 온라인 KML 검사기에서 테스트 할 때 유효한 KML이 아니며 많은 오류가 발생할 수 있다는 것입니다.
Miro

1
U2ros 저는 온라인 FME를 성공하지 못했습니다. 어쩌면 데스크톱 FME, 다음 "설치 라운드"에서 시도해 볼 수 있습니다 ... kml을 shp :-)로 변환하는 스크립트를 프로그래밍하기에 충분히 모험적이지는 않습니다. 그러나 최악의 경우 KML을 통과하는 스크립트 작성을 상상하고 모든 기능에 대해 "ExtendedData"를 찾은 다음 QGIS / ArcGIS / Mapinfo에서 KML로 변환 된 "name"을 통해 결합 할 수있는 table / csv를 생성합니다 ...
Miro

답변:


15

ExtendedData에 올바른 "name"값이 없습니다.

예를 들어

<Data><displayName>System</displayName><value>Riverine</value></Data>

GDAL 및 Qgis Master는 가져 오지 않지만

<Data name="System"><displayName>System</displayName><value>Riverine</value></Data>

가져옵니다.

좋은 텍스트 편집기로 변경할 수 있습니다.

------------------- 미로 추가 ---------------------

KML 편집의 경우 PSPad (또는 메모장 ++ 및 기타 많은 무료 텍스트 편집기)와 같은 바꾸기 기능에서 "일반 표현식"을 허용하는 텍스트 편집기를 사용해야합니다.

발견: <Data><displayName>(.*)</displayName>

바꾸다: <Data name="$1"><displayName>$1</displayName>

그런 다음 QGIS (키는 "새로운"버전-GDAL 버전 1.9.2 이상 포함)와 "벡터 레이어 추가"를 사용하면 레이어는 모든 "ExtendedData"와 함께로드됩니다.


KEY 정보였습니다. 하나의 테스트 파일로 바꾸려고 시도했지만 완벽하게 작동했습니다. 모든 "ExtendedData"는 이제 열로 테이블에 있습니다. 다시 한번 감사드립니다.
Miro

3
실제로 DisplayName은 Qgi에서 사용되지 않습니다. 따라서 <Data> <DisplayName>을 <Data name = "으로 바꾸고 </ DisplayName>을">로 바꾸면 RegExp없이 교체 할 수 있습니다.
AndreJ

1
내 KML 파일에는 QGIS에서 열기 위해 주석을 달아야하는 <SchemaData> 태그도 포함되어있었습니다. 그러나 그렇지 않으면 트릭이 완벽하게 작동했습니다!
Djana

8

globalmapper를 사용하여 습지 파일 중 하나를 모양으로 변환했습니다. 변환 된 dbf 파일 (영역 및 줄)에서 두 개의 스크린 샷을 묶었습니다. 여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

잘만되면 이것은 당신이 원하는 것입니다 ..


고마워요, 그게 바로 내가 필요한 것입니다. KML 표준을 준수하지 않는 이러한 KML을 처리 할 수있는 소프트웨어가 있습니다. 이미 무료 QGIS로 수행하는 방법에 대한 다른 답변이 있기 때문에 Global Mapper를 시도하지는 않지만 다른 누군가를 확실히 도울 수 있습니다. 다시 감사합니다.
Miro

정말 환상적인 컨버터, 멋진!
SIslam

6

kml / kmz 파일 내보내기 / 가져 오기 + 데이터 및 많은 벡터 및 래스터 형식을 쉽게 첨부 할 수있는 Global Mapper 소프트웨어를 사용할 수 있습니다. 최고의 소프트웨어 중 하나입니다.

http://www.bluemarblegeo.com/global-mapper/product/formats.php


팁 주셔서 감사합니다. kml / kmz 파일을 가져 오거나 내보낼 수 있다고 생각하지만 이미 그렇게 할 수있는 5 개 이상의 앱을 사용해 보았습니다. 그리고 그들 중 누구도 속성 ( "ExtendedData")을 읽을 수 없습니다. 실제로 글로벌 매퍼가 그렇게 할 수 있습니까?
Miro

5

Google의 libkml은 우분투에서 GDAL 1.9.2, 특히 gdal-bin 1.9.2-2 ~ precise4와 함께 제공 되지 않는 것으로 보입니다.

$ ogrinfo --formats | grep -i kml
  -> "KML" (read/write)

없는 libkml 및 작업 버전을 얻으려면 ExtendedData지원을, 나는에서 GDAL을 구축했다 svn의 트렁크 에서없는 libkml를 구축 한 후 (r25473) SVN 트렁크 GDAL의 웹 사이트에 설명 된대로 1.2.0 릴리스 분명히 충분하지 않은 것을 특별히 지적, (r864) . libkml0Ubuntu에 정확한 설치 (현재 1.2.0-1ubuntu6)는 도움이되지 않습니다. 1.3 또는 svn 트렁크가 실제로 필요합니다 .PPA를 찾을 수 없었습니다.

궁극적으로 Ubuntu에서 libkml을 정확하게 작성할 수도 없었습니다. 부스트 버전에는 유형 오류가 있으며 종속성이 잘못되어 libtool을 실행하는 동안 오류가 발생합니다. 어떤 이유로 든, 이것들은 데비안 스퀴즈 문제가 아니 었습니다.

$ ogrinfo --formats | grep -i kml
  -> "LIBKML" (read/write)
  -> "KML" (read/write)

일단 그 일을 알게되면, running ogr2ogr -f "ESRI Shapefile" foo.shp foo.kml은 qgis가 가져올 수있는 shapefile을 제공하여 ExtendedData속성을 보존했습니다 .


5

Qgis 1.8.0 Lisboa에서 사용하는 Ogr2ogr kml 드라이버는 kml ExtendedData 태그를 지원하지 않습니다.

LIBKML 드라이버는 GDAL 버전 1.9.2 이상, OSGEO4W 패키지, MS4W 및 Qgis Master에 통합되어 있습니다.

데이터가 잘못되지 않았지만 OSGeo4W의 LIBKML 드라이버에 SchemaData에 문제가있었습니다. 또는 다음과 같이 작동합니다.

<ExtendedData>
 <Data name="Name"><value>Test</value></Data> 
 <Data name="Power"><value>10895</value></Data>
 <Data name="Location"><value>L</value></Data> 
</ExtendedData>

편집 : 이제 SchemaData 버그가 OSGEO4W의 GDAL 1.9.2-2 패키지에서 수정되었습니다.


4

FME 2012 (SP4) 사용

리더 KML로드

작가 선택 (Shapefile)

항목을 연결하고 쓰기 선택 ( 피처 유형의 속성 복사 )

작업 공간을 실행하십시오.

여기에 이미지 설명을 입력하십시오


감사합니다, fme_install.msi를 다운로드했지만 설치에 오류가 있으며이 질문에 대한 다른 해결책이 이미 있으므로이 방법으로 계속하지 않겠습니다. 어쨌든 다시 감사합니다.
Miro


1

QGIS로 달성 할 수 있을지 모르겠습니다. MapWindow에는 KML2Shapefile 플러그인이 있습니다.

KML2Shapefile은 Google Earth KML 및 KMZ 파일을 GIS에서 사용하기 위해 shapefile로 변환하는 MapWindow GIS 플러그인입니다.

KML2Shapefile은 각 KML 지오메트리 유형을 별도의 shapefile로 분할합니다. 복잡한 형상을 지원하며 많은 KML을 속성 데이터로 제공 할 수 있습니다.

MapWindow 는 무료 오픈 소스 GIS 패키지이기도합니다. 무료로 다운로드하여 설치할 수 있습니다. MapWindow에서 KML2Shapefile 플러그인을 사용하여 KML을 shapefile로 변환하고 QGIS에서 결과 모양 파일을로드 할 수 있습니다. 어쨌든 Windows를 사용한다고 가정합니다.

내가 생각할 수있는 최고의 솔루션. QGIS에서 플러그인을 알고있는 누군가가 있기를 바랍니다.


1
당신의 도움을 주셔서 감사합니다. 나는 그것을 시도했지만 여전히 데이터가 손실됩니다. 정보는 다음과 같습니다 : <ExtendedData> <SchemaData schemaUrl = "# vorlage"> <SimpleData name = "Name"> Test </ SimpleData> <SimpleData name = "Power"> 10895 </ SimpleData> <SimpleData name = "Location"> L </ SimpleData> </ SchemaData> </ ExtendedData> 내 코드에 문제가 있습니까?
Felix

아 죄송합니다. 나는 그것이 효과가 있기를 바랐다.
RK

1
@Felix-의견에 제공 한 정보가 정말 유용합니다. 추가 컨텍스트와 명확성을 위해 질문을 편집하고 거기에 추가하는 것이 좋습니다.
Spatial

@AndreJoost-좋은 대답을내는 것 같습니다. 동일한 문제를 가진 다른 사람의 검색 결과에 표시되도록 실제 답변으로 추가하는 것이 좋습니다.
Spatial

1

Global Mapper를 가져 오면 KMZ 또는 KML을 가져온 다음 Vector IMG (ESRI SHP 파일)를 내 보내면됩니다. 전역 매퍼는 대부분의 파일 형식을 읽을 수 있습니다. 그런 다음 ARC, Global mapper, Manifold, QGIS에서 모양을 열고 속성 테이블을 봅니다. 모든 정보가 있습니다. 이 시점에서 Microsoft Excel을 사용하여 SHP에서 DBF 파일을 연 다음 원하는 경우 XLXS 파일 확장자로 저장할 수도 있습니다.


1

QGIS 3.2.0에서 도구 상자를 사용하여 쉽게 변환 할 수 있습니다.

도구 상자에서-> GDAL-> 벡터 변환-> 형식 변환 ...을 선택하십시오. (Caja de Herramientas de Procesos-> GDAL-> Conversión Vectorial-> Convertir Formato)

KML 파일을 선택하고 SHP 파일로 저장하십시오. 또한 스페인어 문자를 제대로 보려면 속성-> 소스 (탭)-> 소스 코딩에서 결과 파일 ( "변환 됨")을 "UTF-8"에서 "Windows-1258"로 변경해야했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.