2017-11-24 57 views
0

shapefiles (.shp)가있는 응용 프로그램에서 작업하고 있습니다.
그 모양을 내 PostgreSQL 데이터베이스에 읽었으며 Google지도에서 그 모양 좌표를 표시 할 수 있습니다.멀티 폴리곤 영역을 서브 영역으로 나누기

이제 유스 케이스가 생겼습니다. LGA (Local Governance Area)를 하위 영역 (10km2 하위 영역으로 나눕니다)으로 나눌 필요가 있습니다.

파이썬/장고/GeoDjango를 사용하여 어떻게 할 수 있습니까?

+1

귀하의 질문은 (너무 광범위) 매우 일반적이며, 그 표준 (그 문제에 대한 또는 gis.stackexchange)에 StackOverflow에서 허용되지 않습니다. 여기를보고 질문을 다시 포맷 해보십시오 : stackoverflow.com/help/how-to-ask –

답변

1

PostgreSQL과 PostGIS를 사용하고 있으므로 ST_SplitST_Dump 데이터베이스 함수를 활용하여 한 가지 유형의 다각형 분할을 만들 수 있습니다.

  1. 다른 스레드에서이 방법을 사용 How to make/use a custom database function in Django (면책 조항 : AI가 쓴 Q &은) :

    from django.contrib.gis.db.models.functions import GeoFunc 
    
    class SplitGeom(GeoFunc): 
        function='ST_Split' 
    
    class DumpGeom(GeoFunc): 
        function='ST_Dump' 
    
  2. 우리는 예를 수정합니다 장고 사용하는 데이터베이스 방법을 포장 ST_Split의 문서에서 제공되는 모델 MyModel이 있고 lga이라는 폴리곤 필드와 구별자인 pk이 있다고 가정합니다.

  3. 특정 다각형을 자르기/나누기 위해 "블레이드"로 사용할 선/다중 선 (또는 다른 지오메트리)을 만듭니다.

    MyModel.objects.annotate(
        subareas=DumpGeom(
         SplitGeom('lga', blade) 
        ) 
    ) 
    

중요하십시오 MyModel 객체로 생성 된 다각형을 포함하는 필드를 추가 할

blade = LineString((lon_1, lat_1), (lon_2, lat_2)) 
  • 사용 annotate와 포장 방법 :의 그 라인 blade을 부르 자을 이것은 방법이 아니라 Ge로 할 수있는 것의 논리를 이해하는 데 도움이되는 방법입니다. oDjango.

    PostgreSQL을에 다각형을 분할하는 방법의 또 다른 예 : http://www.gistutor.com/postgresqlpostgis/6-advanced-postgresqlpostgis-tutorials/21-how-to-cut-or-split-a-polygon-using-a-line-with-postgis.html