Nehir boyunca noktalar arasındaki mesafeyi bulma (Doğrusal referans)


10

Ben gis'de yeniyim ve vuruldum. Küçük linestringlerden (polylines) oluşan bir nehir ağım var. Farklı bir şekil dosyasında, bir nehir üzerinde birkaç istasyonun yerleri var. Nehir boyunca her istasyondan nehrin sonuna kadar mesafe bulmam gerekiyor.

Sorun şu ki, nehirde tam bir linestring yok. Ve linestring'leri birleştirmek veya birleştirmek için kullanabileceğim ortak bir özellik yok. Ayrıca, bazı istasyonlar kolları üzerinde.

resim açıklamasını buraya girin

Sonuç olarak, kollar da dahil olmak üzere geniş bir nehir ağı yapmam ve astar referansı yapmam gerekiyor. Ama bunu nasıl yapacağımı bilmiyorum. Herhangi bir yardım derinden takdir edilmektedir. Lütfen olabildiğince açık bir şekilde açıklayın.

Daha fazla bilgiye ihtiyacınız varsa lütfen yorum yapın.


3
Hangi yazılım platformunu kullanıyorsunuz?
TheSteve0

arcmap arcinfo denedim. Ancak, doğrusal referanslama hakkında aşırı bilgi veriyordu. Sonra pgRouting ve QGIS'e geçtim. Hala mücadele ediyor.
Naresh

ArcGIS Network Analyst uzantısına erişiminiz var mı? Sanırım nehirlerinizi kullanarak ağ veri kümesi oluşturmak mümkün olacak ve daha sonra en kısa mesafeleri bulmak gerçekten kolay olmalı.
radek

Yanıtlar:


2

BWill ile hemfikirim. Ana probleminiz her çoklu hattın kökenini tanımlamaktır. 'Nehir' ne oluşturur? A bir kolun, kolun 0-> uzunluğundan başlayarak bağımsız bir "rota" olduğu varsayımını yapacaktır. Sonra ana nehirler için de aynısını yaparım, ancak bu durumda tüm kurucu poliilinlerden birleştirilmiş bir çoklu çizgi oluşturacağım. Bence bir kez sen orada 'neredeyse' olduğunu. Daha sonra: Birleştirilen tüm çoklu çizgilerin kollar dahil Ölçülen çoklu çizgilere (PolylineM) dönüştürün. Daha sonra 'rota ağınıza' sahipsiniz. O andan itibaren her bir istasyon için rotanız üzerindeki mesafeyi bulma meselesi. Sanýrým istasyon yerleri XY'lerde tanýmlý mý? Ayrıca - başka bir tahmin - tam olarak nehrin üstüne düşmezler, onlar mı? Her durumda, istasyonun her bir nehrin veya kolun başlangıcından mesafesini bulmanın bir yoluna ihtiyacınız olacaktır. Teorik olarak, bir istasyon nehrin ve kolun kesişim noktasındaysa, 2 yere sahip olabilir (her biri için bir tane).

Bu konumu bulmak için ArcMap araçlarını kullanabilirsiniz, ancak bir süredir kullanmadım, bu yüzden kafamın üstünü hatırlayamıyorum. Eğer PostGIS içine shapefiles (?) İçe eğer Öte yandan kullanabilirsiniz ST_Line_Locate_Point . Bu işlev:

Toplam 2d çizgi uzunluğunun bir kesri olarak, LineString üzerinde belirli bir noktaya en yakın noktanın konumunu temsil eden 0 ile 1 arasında bir kayan nokta döndürür.

Bu, daha sonra, birleştirilmiş nehir uzunluğu ile bulduklarınızı çoğaltarak nehir boyunca konumu bulabileceğiniz anlamına gelir. Son bir not: PostGIS kullanıyorsanız, PolylineM'yi oluşturma adımından geçmeniz gerekmez - sadece ArcGIS doğrusal referans için bunu gerektirir.

Umarım bu mantıklıdır!


İstasyonlarım tam olarak kollarda veya nehirde. Aptalca bir şey var, büyük bir nehir yok, sadece küçük çizgiler var. Gördüğüm bir büyük nehir bt veri kendisi tam bir nehir yapmak için herhangi bir ortak özniteliği yok. Ayrıca, derece koordinatları var, bu yüzden arcmap rotaları oluştururken, derece olarak uzunluk olsun? Bence bu mantıklı değil. Koordinatları wgs84'ten başka bir projeksiyona dönüştürmeliyim. Ve evet, PostGIS'e şekil dosyaları aktardım.
Naresh

1

Aynı doğadaki sorumdan,

Bir çizgi boyunca mesafe verilen bir nokta nasıl oluşturulur

aşağıdaki yararlı bağlantılar geldi.
grass.osgeo.org/gdp/html_grass63/lrs.html
wiki.faunalia.it/dokuwiki/doku.php/qgis/lrs

Görevimi çaba eksikliğinden tamamlamıyorum. Deneyimleyeceğiniz tediumun her çoklu hattın kökenini aday göstereceğine inanıyorum.


2
Biraz ilerleme kaydettim. PGrouting kullanarak en kısa yolu bulabilirsiniz ama "düğümleri" güncelleştirmek gerekir. Şu anda postgresql bir düğüm tablo oluşturmak ve bu pgrouting beslemek bir ağ oluşturmak için kullanın. Ama son düğümlerde olmayan tabloya özel düğümler eklemeliyim.Ayrıca, otomatik olarak düğüm haline gelmek için istasyonlardaki çoklu çizgilerimi bölmek. Hala çalışıyor. Yakında güncelleyin.
Naresh
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.