여기 예제와 같이 공간 조인을 시도하고 있습니다. "위치별로 속성에 가입"하는 파이썬 옵션이 있습니까? . 그러나 그 접근 방식은 실제로 비효율적이며 느립니다. 적당한 250 포인트로 이것을 실행하더라도 거의 2 분이 걸리고 1,000 포인트가 넘는 쉐이프 파일에서는 완전히 실패합니다. 더 나은 접근 방법이 있습니까? ArcGIS, QGIS 등을 사용하지 않고 Python에서 완전히 수행하고 싶습니다.
또한 다각형 내에있는 모든 점의 속성 (예 : 모집단)을 합산하고 해당 수량을 다각형 모양 파일에 결합 할 수 있는지 알고 싶습니다.
변환하려는 코드는 다음과 같습니다. 9 행에 오류가 발생합니다.
poly['properties']['score'] += point['properties']['score']
그것은 말합니다 :
TypeError : + =에 대해 지원되지 않는 피연산자 유형 : 'NoneType'및 'float'.
"+ ="를 "="로 바꾸면 제대로 실행되지만 필드를 합산하지는 않습니다. 나는 또한 이것을 정수로 만들려고했지만 실패했습니다.
with fiona.open(poly_shp, 'r') as n:
with fiona.open(point_shp,'r') as s:
outSchema = {'geometry': 'Polygon','properties':{'region':'str','score':'float'}}
with fiona.open (out_shp, 'w', 'ESRI Shapefile', outSchema, crs) as output:
for point in s:
for poly in n:
if shape(point['geometry']).within(shape(poly['geometry'])):
poly['properties']['score']) += point['properties']['score'])
output.write({
'properties':{
'region':poly['properties']['NAME'],
'score':poly['properties']['score']},
'geometry':poly['geometry']})