x, y 열이있는 Excel 파일을 shapefile로 변환하려면 어떻게해야합니까?


26

x, y 열이있는 Excel 파일을 점 shapefile로 변환하려면 어떻게해야합니까?

shapefile을 올바르게 작성하는 것 외에도 다소 선택적 요구 사항이 있습니다.

  1. 열 형식 (Excel 형식 지정자에 따라)을 유지해야합니다 (특히 날짜 형식)
  2. 열 이름은 헤더에서 가져와야합니다.
  3. 나는 것 같은 명령 줄에서이 작업을 수행
  4. 세 번째 열의 포인트에 대해 이기종 공간 참조를 포함시킬 수 있다면 매우 기쁠 것입니다. :)

답변:


24

GDAL 라이브러리의 일부인 OGR / GDAL을 사용하는 것이 좋습니다 . OGR은 XML 파일을 통해 사양을 지정할 수 있는 가상 형식 을 지원 합니다. Excel 워크 시트를 CSV로 변환하면 VRT를 생성하여 데이터에 액세스 할 수 있습니다.

다음과 같은 것이 있다고 가정합니다 example.csv.

Lat,Long,Year,Name
34.0,-120.0,2010-05-01,Off Santa Rosa Island

example.vrt다음과 같이 VRT 를 만들 수 있습니다 .

<OGRVRTDataSource>
    <OGRVRTLayer name="example">
        <SrcDataSource>example.csv</SrcDataSource>
        <GeometryType>wkbPoint</GeometryType>
        <LayerSRS>WGS84</LayerSRS>
        <GeometryField encoding="PointFromColumns" x="Long" y="Lat"/>
    </OGRVRTLayer>
</OGRVRTDataSource>

GDAL 1.7부터 다음과 같이 <Field>내부 요소를 사용하여 속성 필드의 데이터 유형을 추가로 지정할 수 있습니다 <OGRVRTLayer>.

    <Field name="date" src="Year" type="Date" />

shapefile은 DBASE IV 형식으로 특성을 저장 하므로 Excel보다 데이터 형식의 유연성이 떨어집니다. VRT 파일을 지정하면 일반 OGR 툴체인을 사용하여 데이터를 Shapefile로 변환 할 수 있습니다.

ogr2ogr -f "ESRI Shapefile" example.shp example.vrt

불행히도 # 4는 불가능합니다. shapefile 사양은 단일 투영을 허용합니다 ( example.prj마지막 단계 이후에 여기에서 볼 수 있음 ).


이것의 유일한 단점은 <Field>태그 를 작성하기 위해 프로그래밍 방식으로 열의 데이터 유형을 파악해야한다는 것 입니다. 나는 그것을 스스로 알아낼 것 같다 :)
fmark

권리. 자동화 된 솔루션을 원하고 ArcGIS에 액세스 할 수있는 경우 대신 XY 좌표 추가 도구 tinyurl.com/38jm55k를 사용 하여이 작업을 수행 할 수 있습니다.
scw

중요한 고려 사항은 Excel 파일을 ESRI shapefile에 적합한 형식으로 먼저 가져 오는 것입니다. 열 이름, 이름 길이 및 XY 추가 도구를 사용하는 경우 ESRI가 필드 유형을 자동화하는 방식에 제한이 있습니다. 문제. webhelp.esri.com/arcgisdesktop/9.2/…
spg

3
올바른 형식의 vrt 파일을 작성하는 데 도움이되는 온라인 서비스 : vrtbuilder.appspot.com
matt wilkie

9

QGIS (http://qgis.org ) 와 함께 제공되는 Delimited Text 플러그인을 사용하여 텍스트 파일을로드 한 다음 shapefile로 저장할 수 있습니다.


나는 종종이 도구를 사용하는 파서 오류에 시달리고 있습니다. 어떤 충고?
fmark

1
구체적인 예가 있습니까?
gsherman

@ fmark-이 오류도 발생하며 일반적으로 MS Excel이 csv를 처리하기 때문에 발생합니다.
dassouki

6

명령 행이 아니지만 ArcGIS App 내에서이를 수행 할 수 있습니다. 9.3.1부터 XLS를 ArcMap에 직접 추가하기 만하면됩니다. XLS에서 XY 이벤트 레이어 만들기 (예 : X, Y 열 선택 및 공간 참조 설정)이 XY 이벤트 레이어를 새 .shp로 내 보냅니다. 간단한 Python / VBA 스크립트 또는 modelbuilder의 모델로 쉽게 자동화 할 수 있습니다. . 추가 정보가 필요한 경우이 기본 워크 플로우에 대해 기꺼이 도와 드리겠습니다.


1
Python을 사용하는 경우 명령 행에서 지오 프로세싱 도구를 실행할 수 있습니다.
jswise

6

웹 도움말에서 XY 데이터 표시에 대한 도움말 페이지를 찾았지만 찾을 수 없지만 프로세스는 간단합니다.

  1. 를 사용하여 데이터 추가 (또는 드래그 및 카탈로그 창에서 드롭) (스프레드 시트 내에서) 워크 시트를 탐색하고지도에 추가
  2. 마우스 오른쪽 단추를 클릭하여 XY 데이터 표시 를 선택하고 사용 하여 이벤트 계층을 추가하십시오.
  3. 방금 생성 한 이벤트 레이어를 마우스 오른쪽 버튼으로 클릭하고 Data | Export Data 를 사용하여 shapefile을 만듭니다.

이 작업을 수행하려면 ArcView (기본) 라이센스 수준의 ArcGIS (for) Desktop 만 필요합니다.


데이터의 일부가 아닌 맨 위 열로 무엇을해야합니까?
Zoran

데이터의 일부가 아닌 두 개의 열은 무엇입니까? 내가 설명한 절차는 점 형상을 생성하기 위해 선택한 long / lat 열을 사용해야하며 나머지는 속성으로 저장해야한다고 생각합니다. 가장 좋은 방법은 시도해보고 결과가 예상과 다르면 관찰 한 것과 예상 한 것을 설명하십시오.
PolyGeo

내가 두 가지를 잘못 읽은 것으로 생각하십시오. (제목의 맨 위 행을 의미한다고 가정합니다.) 데이터 추가 후에 필드 이름이되어야합니다.
PolyGeo

이것이 여전히되는지 확실하지 않지만 Excel 파일의 헤더 이름에 공백은 XY 추가에 대한 두통이었습니다.
채드 쿠퍼

1
Excel 파일을 ArcGIS에 직접로드하면 그렇지 않은 경우를 제외하고 훌륭하게 작동합니다! 주의 사항 : 날짜가 엉망이고 숫자가 잘립니다. 첫 번째 문제 해결 단계는 항상 텍스트로 정의 된 모든 열을 CSV로 내보내고 대신 문제가 지속되는 것을 확인하는 것입니다. 그 경고는 제쳐두고 X / Y로 표시하면 잘 작동합니다.
matt wilkie

4

항상 모험적인 옵션이 있습니다. 모양 파일을 직접 작성할 수 있습니다. ESRI는 shapefile에 대한 사양을 게시하며 여기에서 읽을 수 있습니다.

http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf

또한 DBF 파일을 작성해야합니다. 형식에 대해 읽을 수 있습니다 :

http://www.clicketyclick.dk/databases/xbase/format/dbf.html#DBF_STRUCT

의심 할 여지없이 과잉이지만 전체 프로세스를 제어 할 수 있다는 이점이 있습니다.


나는 실제로 그런 식으로 생각하고 있습니다-shapefile을 직접 쓰는 대신 OGR을 사용할 것입니다!
fmark

2
Excel은 DBF를 직접 작성할 수 있지만 셰이프 파일의 DBF 구성 요소로 해당 DBF를 사용하여 다양한 수준의 성공을 거두었을 것입니다.
mwalker

Excel은 dbf 파일을 쓰지 않습니다.
user30184

3

필자는 개인적으로 XY 값에서 점을 플롯 할 수있을뿐만 아니라 플롯하기 전에 한 투영에서 다른 투영으로 좌표를 변환 할 수있는 유연성을 제공하는 Safe Software (http://www.safe.com)의 FME를 선호합니다. 구분 기호 유형, 시작 라인 (텍스트 파일에 헤더 정보가있는 경우), 텍스트 파일에 X, Y, 포인트 데이터에 대한 속성 정보가있는 경우 속성을 첨부하십시오. 이 데이터를 Google 어스에서 시각화하려는 경우 KML 포인트 스타일도 지정하면서 KML 형식으로 쓸 수 있습니다. ~ SRG


2

x, y 데이터에 대해 다른 처리를 수행하려면 데이터를 postgres에로드하고 연결과 함께 geomfromtext를 사용하여 형상 데이터 유형을 만든 다음 pgsql2shp를 사용하여 모양으로 내보낼 수 있습니다. 이 방법을 사용하면 다른 열에 이기종 공간 참조 시스템 데이터를 유지할 수 있습니다. 그런 다음 모양으로 내보내기 전에 모든 포인트를 db 내에서 공통 참조 시스템으로 변환하는 데 사용할 수 있습니다. 나는 이것이 ogr / gdal보다 더 많은 단계를 포함한다는 것을 알고 있지만 훨씬 더 많은 유연성을 제공 할 것입니다.


나는 과거 에이 접근법을 사용했으며 좋은 방법입니다. 내 일관성있는 걸림돌은 엑셀 데이터 형식을 안정적으로 감지하는 것 같습니다.
fmark

1
날짜, x, y가 항상 처음 3 열이되도록 열을 다시 정렬하기 위해 Excel vba에서 무언가를 작성할 수 있다고 가정합니다. 열 명명 규칙이 없으면 마음에 드는 것을 완전히 자동화하는 것이 어려울 것입니다.
John Powell

1

CSV 파일을 공간 라이트로로드 한 다음 OGR 또는 QGIS를 사용하여 shapefile로 내보내는 것은 어떻습니까?

http://www.gaia-gis.it/spatialite-2.2/index.html

공간적 공간에서 모양 파일로 직접 내보낼 수도 있습니다.

http://www.gaia-gis.it/spatialite-2.2/spatialite-2.2_tutorial.html#t3.1


Spatialite는 이전 .xls 형식 (Excel 97-2003) 인 경우 Excel 파일을 직접 가져올 수 있습니다. X 및 Y 좌표는 초기 가져 오기 후 SQL을 사용하여 정수 기하학으로 변환해야합니다.
user30184

당신이 자바를 사용 괜찮다면 당신은 엑셀 파일을 찢어하기 위해 POI 프로젝트를 사용하고 새로운 Shape 파일 작성 GeoTools를 사용할 수 있습니다
TheSteve0

0

보다 기본적인 변환을 위해서는 FME 2013에서 2Dpointreplacer 변환기를 사용할 수 있습니다. X 및 Y 값이있는 열을 가리킨 다음 FME는 이러한 값을 예를 들어 점이있는 모양 파일로 변환합니다.
필요에 따라 열 이름과 유형을 설정할 수 있습니다

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