속성을 잃지 않고 .shp에서 .kml로 .shp로


10

속성이있는 shapefile을 클라이언트의 .kml로 변환했습니다. 그런 다음 .kml 및 속성이 Google 어스 내에서 편집되었습니다. 업데이트 된 .kml을 받았으며 이제 .shp로 다시 가져와야합니다. 문제는 : 내 모든 속성이 이제 html 형식이므로 Google 어스에서 팝업 정보 상자를 만듭니다. .shp로 다시 변환하려고하면 내 속성이 (구글이 생성 한) "설명"필드에 표시됩니다. 그리고 내 모든 속성과 정보는 하나의 셀에 집중되어 있습니다. "설명"필드에서 데이터를 추출 할 수있는 방법이 있습니까? 그래도 HTML 형식을 제거하고 사용할 수있는 쉬운 방법이 있습니까?

이것이 일부 포럼에서 찾은 "Fusion Table"방법을 사용하여 얻은 것입니다. 왼쪽에서 html을 볼 수 있으며 표시된 것보다 계속 진행됩니다.

http://s6.postimg.org/uf7jeuksh/problems.png

ArcGIS Desktop 10.2를 사용하고 있습니다.


형식 간 변환에 사용하는 것은 무엇입니까? 대신 ogr2ogr 또는 QGIS를 사용해 볼 수 있습니까?
bugmenot123

답변:


3

방금 Data Interoperability 확장을 사용하여 작성된 Spatial ETL 도구가 KML / KMZ 파일의 속성을 스키마가있는 shapefile로 다시 가져 오는 것을 확인했습니다. 도구 작성 마법사에서 동적 스키마 옵션을 선택 하십시오.

공간 ETL 단계


해결 방법은 필요한 다양한 속성 필드의 값에 대한 설명 필드를 구문 분석하여 해당 필드에 복사하는 것입니다. 그리고 다음에, 클라이언트가 엑셀 스프레드 시트 또는 속성에 속성을 추가하여 업데이트를 위해 shapefile에 다시 결합 할 수있게하십시오.


1
나는 이것이 내 유일한 해결책이라고 생각합니다. 그러나 나는 다음에 엑셀 스프레드 시트를 확실히 포함시킬 것입니다!
Katie B.

ArcGIS 용 Data Interoperability 확장 기능에 액세스 할 수 있습니까? 나는이 문제에 대한 경험이 없지만 거기에 당신의 태도를 다시 매핑 할 수있는 작가가있을 수 있습니다
Adam

Safe Software의 FME (데이터 상호 운용성 기반)도 필요한 작업을 수행하지만 비용도 많이 듭니다.
Adam

3

QGIS에서 kml을 먼저 열고 shapefile로 저장해야하며 속성을 유지했습니다. QGIS에서 벡터 데이터 추가 및 찾아보기에서 유형의 파일을 "키홀 마크 업 언어 (KML)"로 설정하십시오. 가져올 KML을 찾은 다음 열기를 클릭하십시오. KML에서 가져온 객체를 Shapefile에 저장합니다. ArcMap에서 쉐이프 파일을 임포트하면 모든 속성이 유지됩니다.


2

Kevin Martin이 개발 한이 도구 인 Export to KML 이 작업을 수행합니다.

스타일에는 몇 가지 문제가 있지만 최소한 색상과 속성이 정확하며 속성, 레이블 등을 재생할 수있는 많은 옵션이 있습니다.


2

날짜 문자열이 포함 된 필드 중 하나만 필요했습니다. arcMap을 사용하여 필드 계산기를 사용하여 추출 하여이 문제를 해결할 수있었습니다. 몇 개의 필드 만 추출해야하는 경우 약간 지루하지만이 방법이 도움이 될 수 있습니다.

다음 단계는 필드 계산기에서 HTML 태그와 테이블에 저장된 데이터의 길이에 따라 설명 필드에서 하위 문자열을 자르는 데 사용할 VB 행을 작성하는 데 도움이됩니다.

  1. GoogleEarth에서 KML / KMZ를 열고 기능을 클릭하여 팝업을 엽니 다. 검색하려는 필드의 정확한 이름을 식별하십시오. 광산은 "DATE"라고
  2. ArcMap에서 KML / KMZ를 가져올 때 생성 한 레이어의 속성 테이블을 엽니 다.
  3. 설명 필드를 식별하십시오. 내 데이터에서는 "PopupInfo"라고합니다
  4. 첫 번째 레코드에서 "PopupInfo"셀을 마우스 오른쪽 단추로 클릭하고 "복사"를 클릭하십시오.
  5. 메모장을 열고 셀 내용을 붙여 넣습니다. 이제 팝업 HTML이 표시됩니다.
  6. ctrl-F를 사용하여 KML / KMZ에서 필드 이름을 찾으십시오 (제 경우에는 "DATE"). 여기 내가 관심있는 HTML 라인을 보여주는 스크린 샷이 있습니다. 여기에 이미지 설명을 입력하십시오
  7. 필드 이름의 시작부터 데이터 시작까지의 공백을 포함하여 문자 수를 계산하십시오. 제 경우에는 15자가 있습니다.
  8. 추출 할 문자 수를 결정하십시오. 내 하위 문자열의 경우 19가 필요합니다. 예를 들어 AZ 및 WY와 같은 상태 코드 만 필요한 경우 2 만 필요할 수 있습니다. 데이터에이 필드에 일관된 길이의 항목이없는 경우 가장 긴쪽에 오류가 있습니다. 편집 : 나중에 수동으로 또는 instr () 및 rtrim () VB 함수를 사용하여 추가 문자를 제거 할 수 있습니다. 도움이 필요하면 게시하거나 메시지를 보내주십시오.
  9. arcMap에서 레이어에 새 TEXT 필드를 추가하고 데이터에 필요한만큼의 문자를 제공해야합니다. 기본값은 50입니다.

  10. 그런 다음 새 필드의 필드 계산기를 엽니 다. 데이터의 시작은 InStr () 함수를 사용하여 찾고 데이터는 Mid () 함수를 사용하여 추출됩니다. 다음 VB 명령을 입력하십시오.

    Mid([PopupInfo],InStr([PopupInfo],"DATE")+15,19)

물론, 당신의 필드 이름을 바꾸고 (3 단계와 6 단계에서) 숫자 15와 19의 길이를 부분 문자열의 길이 (7과 8 단계에서 찾음)로 변경하십시오.

위의 VB 라인에서 :

  • [PopupInfo]는 KML 팝업에 대한 HTML을 포함하는 성가신 필드의 이름입니다.
  • "DATE"는 추출하려는 데이터가 포함 된 KML 필드 이름 및 HTML 태그입니다.
  • 15는 날짜 태그의 시작부터 실제 날짜 데이터의 시작까지의 문자 수입니다.
  • 19는 날짜 문자열에서 유지하려는 문자 수입니다.

1

다음은 ArcMap, Google Drive Fusion Tables 및 MS Excel을 사용하여 속성을 유지하면서 KML 파일을 .shp 파일로 변환하는 몇 가지 단계를 안내하는 가이드입니다.

가이드가있는 사이트로 연결하십시오 .


예, 그러나 그것은 내 문제를 해결하지 못합니다. 내 속성은 여전히 ​​html 형식의 "설명"필드에 표시됩니다. KML to Layer 도구가 현재 상황에서 작동하지 않습니다. 나는 다른 아크 스크립트를 시도했다.
Katie B.

내 편집 답변을 참조하십시오.
Cameron Sloan

다시 한 번, 원래 질문에 링크 된 이미지는 퓨전 테이블 방법을 사용할 때의 결과입니다. 내 상황에는 효과가 없습니다.
Katie B.

엑셀로 가져 왔습니까?
Cameron Sloan

예, 같은 문제입니다. 다른 사람이 같은 문제를 겪고있는 다른 포럼 사이트를 찾았습니다. 1000 줄의 스크립트를 거쳐 코드를 삭제하거나 "찾기 및 바꾸기"를 시도해야 할 것 같습니다. 도움을 주셔서 감사합니다.
Katie B.

1

PopupInfo xml 필드를 유용한 값으로 나누기 위해 커서와 목록을 사용 하여이 작업을 수행 할 수있었습니다.

  1. arcpy KML을 사용하여 레이어 도구 및 프로젝트 도구를 사용하여 원하는 좌표계로 이동하십시오 (필드와 관련된 레이어 파일로 인해 원래 변환 출력에 필드를 추가하는 데 문제가 발생했습니다)

  2. .da.SearchCursor를 사용하여 첫 번째 행에서 PopupInfo 문자열을 가져 오십시오. 그런 다음 '<'를 기준으로 목록으로 분할하고 처음 두 값 (Google 어스의 레이블 필드)을 삭제하고 'td>'태그는 있지만 'td>'닫는 태그는없는 나머지 값을 새 목록에 넣습니다. 필드 이름 (짝수 인덱스) 및 필드 값 (홀수 인덱스)

  3. arcpy.AddField_management를 사용하여 필드 이름 목록을 반복하여 모든 필드를 추가하십시오 (이미 존재하는 경우 건너 뜁니다)

  4. .da.UpdateCursor를 사용하여 모든 행에 대한 PopupInfo를 얻은 다음 검색 커서와 마찬가지로 새 목록을 분할하고 작성하십시오.

  5. 이번에는 모든 홀수 인덱스 값을 사용하여 행을 업데이트하고 (i % 2 <> 0 : row [(i-1) / 2] = list [i]) 그런 다음 cursor.updateRow (row)



0

업데이트 : 동일한 문제 로이 스레드를 발견하면 거기에 도구가 있습니다! https://mygeodata.cloud/를 확인 하십시오.

정말 잘 작동합니다. KML을 업로드 할 수 있었고 내 보낸 shapefile은 모든 속성을 자체 필드에 올바로 포함했습니다. 유일한 단점은 "무료"변환 수가 제한되어 있다는 것입니다.


-3

이 변환 문제에 대한 간단한 해결책은 여전히 ​​없습니다. 지난 몇 년 동안 여기에서 여러 번 요청되었습니다.

추가 데이터가 포함 된 kml-in-qgis

kml2shp 동안 데스크탑에 대한 속성 유지

잃어버린 속성 데이터없이 kml에서 형태 파일로 변환

KmltoLayer 변환 도구에 대한 esri의 설명 :

"Esri에서 KML 도구의 '소유자'로서 다음과 같이 말할 수 있습니다. KML 내의 ExtendedData 요소는 모든 버전 (9.3-10.3)에서 ArcGIS와 함께 KML to Layer 도구를 사용할 때 필드 속성으로 변환되지 않습니다. 여기에는 ArcMap on Windows 또는 Linux의 ArcGIS Server. 향후 릴리스에서 고려중인 기능을 지원하기위한 개선 요청이 있습니다. "


2
이봐-나는 당신의 대답에 개인적인 공격을합니다. 내 의견을 복사하여 붙여넣고 따옴표로 묶으려면 확장 프로그램 구매에 대한 자신의 의견을 추가하지 마십시오.
KHibma

@sirgeo는 Data Interoperability 확장에이 문제에 대한 해결책이 있습니다. 이것은 이것이 당신이 좋아하는 해결책이 아닌 것 같습니다.
Adam
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.