ArcGIS Desktop veya QGIS'de çizgi şekil dosyasındaki her satır için başlangıç ​​ve bitiş noktaları alınıyor mu?


15

Bir vektör (çoklu çizgi) şekil dosyası var ve her satırın başlangıç ​​ve bitiş noktalarını (düğümleri) almam ve bu noktalarla bir şekil dosyası oluşturmam gerekiyor. Daha sonra çoklu satırın öznitelik tablosuna puan kimliğine dayalı her satır için başlangıç ​​ve bitiş noktasını eklemem gerekir.

Bunu nasıl basit bir şekilde ArcGIS Desktop veya QGIS'de yapabilirim?


2
ArcGIS'te, Gelişmiş bir lisansınız varsa, Her İki Uç seçeneği ile Veri Yönetimi Araç Kutusu-> Unsurlar Araç Seti-> Noktalara Göre Özellik Noktaları aracını kullanabilirsiniz. Satırın tüm özellikleri korunur. Ancak, orijinal çizgi özellik sınıfınıza bir alan eklemeniz ve bu değerin noktalarda korunmasını sağlamak için çizginizdeki özellik kimliğini hesaplamanız gerekir. Çizgilerinizde başka bir benzersiz değer alanınız varsa, aracı çalıştırdıktan sonra FID'ye katılıp hesaplayabilirsiniz. Son seçenek Bire Çok seçeneğiyle Uzamsal Birleştirme yapmayı ve kötü niteliklere sahip kopyaları kaldırmayı içerir.
Richard Fairhurst

Bu sorunuza cevap veriyor mu? "Python / arcpy ile başlangıç ​​ve bitiş noktası koordinatlarını nasıl alabilirim?" gis.stackexchange.com/q/31684/8104
Aaron

Benzer bir yaklaşımı denedim ama yol boyunca kayboldum. Yeniden yapmaya çalışacağım. En iyisi, herkesin aynı prosedürü daha sonra yapabilmesi için tüm bu işi yapan bir makro oluşturmak olacaktır. Şerefe!
user51651

@RichardFairhurst yöntemi, muhtemelen bir cevap olarak önerilmelidir. Tarihsel olarak böyle yaptım
bwp8nt

Yanıtlar:


8

Bu GDAL için bir astar. Bu komut, seçilen özniteliklere sahip başlangıç ​​düğümlerinden bir şekil dosyası oluşturur:

ogr2ogr -f "ESRI Shapefile" -dialect sqlite output.shp -sql "select ST_StartPoint(geometry), attribute_1, attribute_2, attribute_3 from input" input.shp

Uç noktalar için ST_EndPoint kullanın.


Muhtemelen işi halletmeliyim, ama daha basit (görsel) bir şey arıyordum, böylece programlama becerileri olmayan diğer insanlar görevi yerine getirebilsinler.
user51651

Bu komutu nereye yazıyorsunuz?
blue_chip

Komut satırına. Linux'ta normal kabuğu kullanın. Windows'ta komut penceresini kullanın, ancak ortamınızın doğru yollara sahip olmasına dikkat edin. Osgeo4w kabuğu bunu otomatik olarak yapar.
user30184

7

QGIS çözümü: Bir çizgi vektör dosyasının başlangıç ​​ve bitiş düğümlerini (koordinatları), yalnızca alan hesaplayıcısında xat ve yat kullanarak, ilgili indeksler 0 (başlangıç) ve -1 (bitiş) ile çıkarmak mümkündür.

xat(0)    
yat(0)
xat(-1)
yat(-1)


5

Bir ArcGIS çözümü için, hatlarda noktalar oluşturan bir coğrafi işleme aracı yaptım.

İndirebilir ve kodu buradan görüntüleyebilirsiniz: Çizgilerde Nokta Oluşturma

Tür için BAŞLANGIÇ / BİTİŞ NOKTALARI'nı seçmek istersiniz. Bu, her çoklu çizgi için başlangıç ​​ve bitiş noktalarını içeren yeni bir nokta özellik sınıfı oluşturur.

Çıktı noktası özellik sınıfı, aynı zamanda, oluşturulduğu çoklu çizginin OID'sini kaydeden LineOID adlı bir alana da sahip olacaktır. Bu şekilde özellik verilerinize geri katılabilirsiniz.

Parametreleri nasıl ayarlayacağınıza ilişkin bir ekran görüntüsü:

resim açıklamasını buraya girin


Bu harika Ian! İndirip test edip en kısa sürede size geri bildirim vereceğim. Bu aracın ihtiyacım olan şey için kullanışlı olacağını ve süreci daha iyi otomatikleştirmeye yardımcı olacağını düşünüyorum! Teşekkür ederim!
user51651

Merhaba Ian, Idk neden ama aracınızı ArcGIS 10.0 veya 10.1'de çalıştıramadım ... Araç kutusuna ekledim ama öğle yemeği
yemiyor

@ user51651 Bir hata mesajı alıyor musunuz? 10.0 ile çalışmaz, ancak 10.1 ve üstü ile çalışmalıdır. Geoprocessing menüsüne ve ardından Results (Sonuçlar) 'a girerseniz. Orada mesaj var mı?
ianbroad

3

Nitelik tablosundaki uç noktaların koordinatını eklemek için ArcGIS kullanarak alan hesaplayıcısını kullanabilirsiniz (geometri oluşturmanıza gerek yoktur). Alan adını, alan hesaplayıcısını tıklayın, ardından aşağıdaki tek satırlarla Python sözdizimini kullanın (örnek X koordinatı ile):

!shape.firstPoint.X!

!shape.lastPoint.X!

her şeyin içinde olduğunu unutmayın !!


Bu gerçekten iyi bir cevap, bunun mümkün olduğunu fark etmedim. Alan Hesaplayıcı'daki bir anlık görüntüsü, göreve daha az aşina olan insanlara yardımcı olabilir. Bunu M değerleri ile de yapabileceğinizi varsayıyorum?
bwp8nt

2

QGIS'te Belirli Noktaları Ayıkla aracını kullanın. Takım Vertex endeksleri için 0 almak başlangıç noktaları ve -1 uç noktaları ya da almak için , -1 0 hem de alır.

QGIS Spesifik Köşeleri Çıkarın

Açıklamaya dikkat edin:

İlk tepe noktası 0 indeksine karşılık gelir, ikinci tepe noktası 1 indeksine vb. Sahiptir. Negatif indeksler geometrinin sonundaki köşeleri bulmak için kullanılabilir, örn. -1 endeksi son tepe noktasına karşılık gelir, - 2, ikinci son tepe noktasına vb. Karşılık gelir.


1

ArcGIS'te, Gelişmiş bir lisansınız varsa, Her İki Uç seçeneği ile Veri Yönetimi Araç Kutusu-> Unsurlar Araç Seti-> Noktalara Göre Özellik Noktaları aracını kullanabilirsiniz. Satırın tüm özellikleri korunur. Ancak, orijinal çizgi özellik sınıfınıza bir alan eklemeniz ve bu değerin noktalarda korunmasını sağlamak için çizginizdeki özellik kimliğini hesaplamanız gerekir. Çizgilerinizde başka bir benzersiz değer alanınız varsa, aracı çalıştırdıktan sonra FID'ye katılıp hesaplayabilirsiniz. Son seçenek Bire Çok seçeneğiyle Uzamsal Birleştirme yapmayı ve kötü niteliklere sahip kopyaları kaldırmayı içerir.

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.