QGIS kullanarak nokta kümesinin sınırını çizmek?


9

Çokgene dönüştürmek istediğim bir dizi noktam var.

resim açıklamasını buraya girin

resim açıklamasını buraya girin

İçbükey gövdeyi denedim, ancak aşağıda gördüğünüz gibi çokgen almıyorum,

resim açıklamasını buraya girin

Denaulay Üçgenleme'yi kullandığımda dış üçgenleri silmem gerekiyor.

resim açıklamasını buraya girin

Aynı şeyi yapmanın etkili bir yolu var mı?

Ayrıca Convex gövdesini de denedim.

resim açıklamasını buraya girin


Vektör -> Geoprocessing araçları -> Konveks gövde (ler) ... veya Geoprocessing araç kutusu -> Vektör geometri araçları -> Konveks gövde mi?
Dmitry Baryshnikov

Evet, denedim. Ancak, bunun ihtiyacım olan şekil için geçerli olmadığını düşündüm. Soruyu güncelleyeceğim.
Stephen Jacob

3
ilk görüntünüzde gösterilen çizgiler mi yoksa sadece puanlarınız mı var?
radouxju

1
Bir sorum var: amacınız nedir? veriler neyi temsil ediyor? nehir ? yol? Korkarım "S" şekilleri veya bükülmüş şekilleri varsa, python ile bile çalışmaz ...
Keiko

2
@StephenJacob - Puanlarınız nasıl sıralanıyor? Saat yönünde veya saat yönünün tersine giden bir siparişleri varsa, önce noktalarınızı çizgilere dönüştürmek (örneğin, SAGA'nın Noktaları çizgiye dönüştür ) aracını kullanmak ve ardından çizgileri bir poygona dönüştürmek (örn. Çizgileri çokgenlere aracı) mümkündür.
Joseph

Yanıtlar:


5

Hangi noktaların "sol" veya "sağ" a ait olduğunu bildiğinizi varsayıyorum, aksi takdirde birçok çözüm var. Eğer öyleyse, delaunay üçgenlemesini ve ardından "merkezi" üçgenleri kullanabilirsiniz. Bu yöntemle, puanların belirli bir sırada olmasına gerek yoktur. Dikkate almanız gereken tek şey, ihtiyacınız olan üçgenlerin her iki taraftan en az bir noktaya değmesi gerektiğidir.

özellik tablosunu aç> ifadeye göre seç> "kod" = 1

vektör> araştırma aracı> konuma göre seç (yeni seçim, kesişme)

resim açıklamasını buraya girin

özellik tablosunu aç> noktaların seçimini tersine çevir (ctrl + R)

vektör> araştırma aracı> konuma göre seç (seçimden kaldır, ayrık)

resim açıklamasını buraya girin

vektör> coğrafi işleme aracı> çözün

resim açıklamasını buraya girin


3

@Radouxju ile aynı sonuca sahibim.

Operasyonlar :

  1. 1 çoklu çizgi seçin [tıkla seçin]
  2. Çoklu çizgi tablonuzu güncelleyin ve her özellik için bir sayı etkiler [alan hesaplayıcı]
  3. Bir çoklu çizgiyle kesişen noktaları seçin [uzamsal sorgu aracı]
  4. Seçilen noktaları önceden etkilenen çok satırlı değerle güncelleyin [alan hesaplayıcı]
  5. Seçim noktasını koru ve bu seçilen noktalarla kesişen gecikme üçgenlerini seçin [uzamsal sorgu aracı]
    resim açıklamasını buraya girin
    resim açıklamasını buraya girin

  6. Nokta seçimini ters çevirin veya diğer çoklu çizgiyi [ifade ile seçim] veya [seçimi ters çevir ] ile kesişen noktaları seçin

  7. Geçerli seçimden, diğer noktalarla ayrık olan delaunay üçgenlerini kaldır [uzamsal sorgu aracı]
    resim açıklamasını buraya girin
    resim açıklamasını buraya girin

  8. [Geoprocessing tool> dissolve] öğesini seçerek özellikleri birleştirin
    resim açıklamasını buraya girin
    resim açıklamasını buraya girin


ÖNEMLİ : Bu sonucu elde etmek için polinlere sahip olmalısınız!


Teşekkürler @Keiko Cevabınız radouxju'nun cevabını yorumlamak için yararlı oldu
Stephen Jacob

@StephenJacob hoş geldiniz! Sadece ekip çalışmasıydı! ;-)
Keiko

1

Python ile ilgili deneyiminiz varsa, Shapely kütüphanesini kullanabilir ve iki satırdaki noktalardan bir Çokgen oluşturabilirsiniz. Her iki çizginin başlangıç ​​ve bitiş noktalarının ne olduğunu python'a söylemeniz gerekir.

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)

Daha da iyisi: bunu yapmak için jeopandaları da kullanabilirsiniz. geopandas, şekil dosyaları da dahil olmak üzere birden çok formata kolayca kaydetmenizi sağlar

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 () işlevini kullanarak çizgi geometrilerini okuyabilirsiniz.

Genel CBS'de çokgen köşe sıralaması: saat yönünde veya saat yönünün tersine

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


Bunu bir şekil dosyasına nasıl dönüştürebilirim?
Stephen Jacob

1
Birden fazla araç kullanabilirsiniz, ancak ben bir coğrafi panda hayranıyım. Gdf.to_file ('MyGeometries.shp', sürücü = 'ESRI Şekil
Dosyası
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.