Vẽ ranh giới của tập hợp các điểm bằng cách sử dụng QGIS?


9

Tôi có một tập hợp các điểm mà tôi muốn thay đổi thành một đa giác.

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Tôi đã thử thân tàu lõm nhưng không có được đa giác như bạn có thể thấy bên dưới,

nhập mô tả hình ảnh ở đây

Và khi tôi sử dụng Denaulay Triangulation, tôi cần xóa các hình tam giác bên ngoài.

nhập mô tả hình ảnh ở đây

Có một cách hiệu quả để làm như vậy?

Tôi cũng đã thử vỏ tàu lồi.

nhập mô tả hình ảnh ở đây


Bạn có thử Vector -> Công cụ xử lý địa lý -> Vỏ lồi ... hoặc hộp công cụ Geoprocessing -> Công cụ hình học Vector -> Vỏ lồi?
Dmitry Baryshnikov

Vâng, tôi đã thử điều đó. Tuy nhiên, tôi nghĩ rằng điều này không áp dụng cho hình dạng tôi yêu cầu. Tôi sẽ cập nhật câu hỏi.
Stephen Jacob

3
Bạn có các dòng hiển thị trên hình ảnh đầu tiên của bạn hoặc chỉ các điểm?
radouxju

1
Tôi có một câu hỏi: mục tiêu của bạn là gì? dữ liệu đại diện cho cái gì? con sông ? đường ? Tôi sợ rằng nếu bạn có hình dạng "S" hoặc hình dạng xoắn, nó sẽ không hoạt động, ngay cả với con trăn ...
Keiko

2
@StephenJacob - Điểm của bạn được sắp xếp như thế nào? Nếu chúng có thứ tự đi theo chiều kim đồng hồ hoặc ngược chiều kim đồng hồ thì trước tiên bạn có thể chuyển đổi điểm của bạn thành dòng (ví dụ: sử dụng công cụ Chuyển đổi điểm thành dòng của SAGA ) và sau đó chuyển đổi các dòng thành poygon (ví dụ: công cụ Lines thành đa giác ).
Joseph

Câu trả lời:


5

Tôi giả sử rằng bạn biết điểm nào thuộc về "bên trái" hoặc "bên phải", vì nếu không thì có nhiều giải pháp. Nếu vậy, bạn có thể sử dụng tam giác delaunay theo sau với một lựa chọn các tam giác "trung tâm". Với phương pháp này, không cần phải có các điểm theo một thứ tự cụ thể. Tất cả những gì bạn cần xem xét là thực tế là các hình tam giác bạn cần phải chạm ít nhất một điểm từ mỗi bên.

mở bảng thuộc tính> chọn theo biểu thức> "code" = 1

vector> công cụ nghiên cứu> chọn theo vị trí (lựa chọn mới, giao nhau)

nhập mô tả hình ảnh ở đây

mở bảng thuộc tính> đảo ngược lựa chọn các điểm (ctrl + R)

vector> công cụ nghiên cứu> chọn theo vị trí (loại bỏ khỏi lựa chọn, tách rời)

nhập mô tả hình ảnh ở đây

vector> công cụ xử lý địa lý> hòa tan

nhập mô tả hình ảnh ở đây


3

Tôi có kết quả tương tự như @radouxju.

Hoạt động:

  1. Chọn 1 đa tuyến [chọn khi nhấp]
  2. Cập nhật bảng polyline của bạn và ảnh hưởng đến một số cho từng tính năng [máy tính trường]
  3. Chọn các điểm giao nhau với một đa tuyến [công cụ truy vấn không gian]
  4. Cập nhật các điểm đã chọn theo giá trị đa tuyến bị ảnh hưởng trước đó [máy tính trường]
  5. Giữ điểm chọn và chọn các tam giác delaunay giao với các điểm đã chọn này [công cụ truy vấn không gian]
    nhập mô tả hình ảnh ở đây
    nhập mô tả hình ảnh ở đây

  6. Đảo ngược lựa chọn điểm hoặc chọn các điểm giao nhau với đa tuyến khác [chọn theo biểu thức] hoặc [đảo ngược lựa chọn]

  7. Xóa khỏi lựa chọn hiện tại các tam giác delaunay tách rời với các điểm khác [công cụ truy vấn không gian]
    nhập mô tả hình ảnh ở đây
    nhập mô tả hình ảnh ở đây

  8. Hợp nhất các tính năng bằng cách chọn [công cụ xử lý địa lý> hòa tan]
    nhập mô tả hình ảnh ở đây
    nhập mô tả hình ảnh ở đây


QUAN TRỌNG : Bạn PHẢI có polylines để có được kết quả này!


Cảm ơn @Keiko câu trả lời của bạn rất hữu ích để diễn giải câu trả lời của radouxju
Stephen Jacob

Bạn được chào đón @StephenJacob! Đó chỉ là tinh thần đồng đội! ;-)
Keiko

1

Nếu bạn có kinh nghiệm với python, bạn có thể sử dụng thư viện Shapely và tạo Đa giác từ các điểm trong hai dòng. Bạn sẽ cần cho python biết điểm bắt đầu và điểm kết thúc của cả hai dòng là gì.

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)

Thậm chí tốt hơn: bạn cũng có thể sử dụng geopandas để làm điều này. geopandas cho phép bạn dễ dàng lưu vào nhiều định dạng bao gồm cả shapefiles

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')

bạn có thể đọc các hình học dòng bằng hàm geopandas gpd.read_file ().

Thứ tự các đỉnh đa giác trong GIS nói chung: theo chiều kim đồng hồ hoặc ngược chiều kim đồng hồ

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


Làm thế nào để chuyển đổi này thành một tập tin hình dạng?
Stephen Jacob

1
Bạn có thể sử dụng nhiều công cụ nhưng tôi là một fan hâm mộ của geopandas. Sử dụng gdf.to_file ('MyGeometries.shp', driver = 'ESRI Shapefile')
RutgerH
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.