태그 보관물: qgis-processing

qgis-processing

QGIS를 사용하여 점 집합의 경계를 그리시겠습니까? 싶은 점들이 있습니다. 오목 선체를 시도했지만 아래에서

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

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

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

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

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

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

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

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

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

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



답변

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

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

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

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

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

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

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

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

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


답변

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

운영 :

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

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

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

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

  7. 현재 선택에서 다른 점과 분리 된 들로네 삼각형을 제거합니다 [공간 쿼리 도구]

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

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

  8. 선택하여 피처 병합 [지오 프로세싱 도구> 디졸브]

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

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

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


답변

파이썬 경험이 있다면, 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


답변