GeoPandas to_file ()은 좌표계없이 GeoDataFrame을 저장합니다


13

나는 가지고있다

  • GeoPandas 0.2.1 py27_0
  • fiona 1.7.0 np110py27_1
  • 파이썬 2.7.10

Anaconda 2-4.1.1-Windows-x86 환경에 설치되었습니다. GeoDataFrame입력 데이터 세트를 읽고 데이터를 조작하여 구성 할 수 있지만 출력 데이터 세트를 저장해도 좌표계가 보존되지 않습니다.

import geopandas as gpd
world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
world.to_file(driver='ESRI Shapefile',filename=r'C:\GIS\Temp\world_out.shp')

world_out.shp소스 셰이프 파일의 기능과 스키마가 포함되어 있지만 좌표계는 정의되어 있지 않습니다 ( <Unknown>). world_out.prj파일 0 KB입니다 아무것도 포함되어 있지 않습니다.

out = gpd.read_file(r'C:\GIS\Temp\world_out.shp')
print out.crs
>>> {}

순수한 Fiona를 사용 하여이 작업을 수행하도록 테스트했으며 crs정보를 유지하면서 정상적으로 작동합니다 .

import fiona

datasrc_path = r'C:\Program Files (x86)\ArcGIS\Desktop10.4\TemplateData\TemplateData.gdb'

with fiona.drivers():
    with fiona.open(datasrc_path,layer='cities') as source:
        meta = source.meta
        meta['driver'] = 'ESRI Shapefile'
        meta['layer'] = source.name

        with fiona.open(r'C:\GIS\CitiesFiona.shp', 'w', **meta) as sink:
            for f in source:
                sink.write(f)

CitiesFiona.prj파일은 좌표 시스템에 대한 정보를 포함한다.

따라서 GeoPandas가 메소드를 crs호출 할 때 데이터 프레임을 출력 데이터 세트로 읽고 쓸 수없는 것 같습니다 to_file(). 다양한 소스와 데이터 세트 to_file()에서 GeoDataFrames생성을 시도했지만 좌표 시스템 정보가 출력 데이터 세트에 존재하지 않았습니다.

전에이 문제가 발생한 적이 있습니까? 누구든지 이것을 테스트 할 수 있습니까?

답변:


11

나는이 행동을 전에 보았습니다.

잘 알려진 텍스트 (crs_wkt) 문자열을 to_file()메소드 에 명시 적으로 전달해야합니다 . 그러면 문자열이로 전달되어 fiona.open().prj 파일을 작성합니다.

샘플 코드를 사용하여 다음과 같이하십시오.

ws = r"D:\temp_se"
prj_file = gpd.datasets.get_path('naturalearth_lowres').replace(".shp",".prj")
prj = [l.strip() for l in open(prj_file,'r')][0]
world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
temp_shp = os.path.join(ws,"world_out.shp")
world.to_file(filename=temp_shp,driver='ESRI Shapefile',crs_wkt=prj)

생산해야합니다 : 여기에 이미지 설명을 입력하십시오

read_file()to_file()기능은 단순히 래퍼 함수 역할을합니다. 그들은 전화 fiona.open(), 누구의 서명이 아래와 같습니다 :

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

geopandas로 파일을 읽거나 쓸 때 crs_wkt 값을 명시 적으로 전달해야합니다.


1
이것을 게시 해 주셔서 감사합니다. 놀랍게도 더 이상 문제를 재현 할 수 없습니다. 위에 게시 한 코드를 실행할 때에 .prj대한 정보 가있는 파일을 얻 습니다 crs. 내가 업그레이드했기 때문에 그것은있을 수 fionafiona 1.7.0 np110py27_2.
Alex Tereshenkov

불행히도 최신 버전에서는 여전히 문제가 있습니다. geopandas 0.4.1 및 fiona 1.8.4가 있습니다.
Vaiaro
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.