QGIS를 사용하여 점 집합의 경계를 그리시겠습니까?


9

다각형으로 바꾸고 싶은 점들이 있습니다.

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

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

오목 선체를 시도했지만 아래에서 볼 수 있듯이 원하는 다각형을 얻지 못합니다.

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

그리고 Denaulay Triangulation을 사용할 때 바깥 쪽 삼각형을 삭제해야합니다.

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

효율적인 방법이 있습니까?

또한 볼록 껍질을 시도했습니다.

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


Vector-> Geoprocessing tools-> Convex hull (s) ... 또는 Geoprocessing toolbox-> Vector geometry tools-> Convex hull을 시도합니까?
Dmitry Baryshnikov

네, 시도했습니다. 그러나 필요한 모양에는 해당되지 않는다고 생각했습니다. 질문을 업데이트하겠습니다.
Stephen Jacob

3
첫 번째 이미지에 선이 표시되어 있습니까? 아니면 점만 표시되어 있습니까?
radouxju

1
질문이 있습니다 : 당신의 목표는 무엇입니까? 데이터는 무엇을 나타 냅니까? 강? 도로? "S"모양이나 꼬인 모양이 있으면 파이썬에서도 작동하지 않을 것 같습니다.
Keiko

2
@StephenJacob-포인트는 어떻게 주문됩니까? 시계 방향 또는 반 시계 방향의 순서가있는 경우 먼저 포인트를 선으로 변환하고 (예 : SAGA의 포인트를 선으로 변환 도구를 사용하여) 선을 포 이곤으로 변환 할 수 있습니다 (예 : 선을 다각형으로 변환 도구).
Joseph

답변:


5

다른 방법이 많기 때문에 "왼쪽"또는 "오른쪽"에 속하는 점을 알고 있다고 가정합니다. 그렇다면 들로네 삼각 분할 (Delaunay Triangulation)과 "중심"삼각형을 선택할 수 있습니다. 이 방법을 사용하면 특정 순서로 포인트를 가질 필요가 없습니다. 고려해야 할 것은 필요한 삼각형이 각 측면에서 하나 이상의 점에 닿아 야한다는 사실입니다.

속성 테이블 열기> 표현식으로 선택> "code"= 1

벡터> 연구 도구> 위치별로 선택 (새로운 선택, 교차)

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

속성 테이블 열기> 점 선택 반전 (ctrl + R)

벡터> 조사 도구> 위치별로 선택 (선택에서 제거, 분리)

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

벡터> 지오 프로세싱 도구> 디졸브

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


3

@radouxju와 동일한 결과가 있습니다.

운영 :

  1. 폴리 라인 1 개 선택 [클릭시 선택]
  2. 폴리 라인 테이블을 업데이트하고 각 기능에 대한 숫자에 영향을줍니다 [필드 계산기]
  3. 하나의 폴리 라인과 교차하는 점을 선택합니다 [공간 쿼리 도구]
  4. 이전에 영향을받은 폴리 라인 값으로 선택한 포인트 업데이트 [필드 계산기]
  5. 선택 점을 유지하고 선택된 점과 교차하는 들로네 삼각형을 선택합니다 [공간 쿼리 도구]
    여기에 이미지 설명을 입력하십시오
    여기에 이미지 설명을 입력하십시오

  6. 점 선택을 반전 시키거나 다른 폴리 라인 [표현식 선택] 또는 [선택 반전 ] 과 교차하는 점을 선택하십시오

  7. 현재 선택에서 다른 점과 분리 된 들로네 삼각형을 제거합니다 [공간 쿼리 도구]
    여기에 이미지 설명을 입력하십시오
    여기에 이미지 설명을 입력하십시오

  8. 선택하여 피처 병합 [지오 프로세싱 도구> 디졸브]
    여기에 이미지 설명을 입력하십시오
    여기에 이미지 설명을 입력하십시오


중요 :이 결과를 얻으려면 폴리 라인이 있어야합니다!


감사합니다 @Keiko 귀하의 답변은 radouxju의 답변을 해석하는 데 도움이되었습니다
Stephen Jacob

@StephenJacob를 환영합니다! 그것은 단지 팀워크였습니다! ;-)
Keiko

1

파이썬 경험이 있다면, Shapely 라이브러리를 사용하여 두 줄의 점에서 다각형을 만들 수 있습니다. 파이썬에게 두 줄의 시작과 끝 점이 무엇인지 알려 주어야합니다.

from shapely.geometry import Point, Polygon, LineString
import geopandas as gpd
import pandas as pd
line1 = [(1,1),(2,1.2),(3,1)]
line2 = [(1,2),(2,2.2),(3,2)]
# you need to reverse the order of one line to make it a polygon
line2reverse = list(reversed(line2))
polgonList2 = line1 + line2reverse
Polygon(polgonList2)

더 좋은 방법 : geopandas를 사용하여이 작업을 수행 할 수도 있습니다. geopandas를 사용하면 shapefile을 포함한 여러 형식으로 쉽게 저장할 수 있습니다

d = {'identifier' : [1, 2],
 'name' : ["Netherlands", "Germany"],
 "line1": [[(1,1),(2,1.2),(3,1)], [(1,1),(2,1.2),(3,1)]],
 "line2": [[(1.1,2.1),(2.1,2.3),(3.1,2.2)],[(1,2),(2,2.2),(3,2)]]
}

df = pd.DataFrame(d)
def makePolygon(row):
    line2reverse = list(reversed(row["line2"]))
    return Polygon(line1+line2reverse)    
geometries = []

for index, row in df.iterrows():
    geometries.append(makePolygon(row))
crs = {'init': 'epsg:4326'} 
gdf = gpd.GeoDataFrame(df, crs=crs, geometry=geometries)
gdf.to_file('MyGeometries.shp', driver='ESRI Shapefile')

geopandas gpd.read_file () 함수를 사용하여 라인 지오메트리를 읽을 수 있습니다.

일반적인 GIS에서 다각형 정점의 순서 : 시계 방향 또는 시계 반대 방향

https://nbviewer.jupyter.org/gist/rutgerhofste/b01c17aa6851ea577f10c21a4c3717bc


이것을 모양 파일로 변환하는 방법?
Stephen Jacob

1
여러 도구를 사용할 수 있지만 지오 팬더 팬입니다. gdf.to_file ( 'MyGeometries.shp', driver = 'ESRI Shapefile') 사용
RutgerH
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.