Satırlar noktalara otomatik olarak yapıştırılsın mı?


19

İki vektör şekil dosyaları var: Bir dosya, kuyuları temsil eden noktalar ve diğeri, kuyulara giden ve menhollerden çıkan boruları temsil eden bir çoklu çizgi dosyasıdır. Çizgileri belirli bir mesafe içinde en yakın menhollere yapıştırmam gerekiyor.

Bunu manuel olarak yapmadan başarmanın kolay bir yolu var mı?

çizgiler -> noktalar

Güncelleme

Alexandre'a göre şekil dosyalarımı mekansal formata ihraç ettim. Bundan sonra ne olacağından emin değilim.

resim açıklamasını buraya girin

Güncelleme # 2 Yeni bir db dosyası oluşturdum ve spatialite-gui kullanarak yeni db'ye shapefiles aldım, SQL sorgumu ayarladım ama gördüğünüz gibi "böyle bir sütun yok: f.geom" hatası alıyorum

resim açıklamasını buraya girin


Bir Spatialite uzamsal tabloda (katman), özellik geometrileri bir özniteliğe kaydedilir. İsimler farklı olabilir. "Boru" tablosunda bu özniteliğe Geometri denir. Cevabımı, mh'nin bir Geometri niteliği olarak da varsayarak güncelleyeceğim.
Alexandre Neto

"Böyle bir işlev yok: ST_Snap" hatası aldım. Windows 7 64bit üzerinde QGIS 1.8 kullanıyorum.
GreyHippo

Hangi Spatialite sahipsiniz? QGIS'te kontrol edebilirsiniz> Yardım> Hakkında
Alexandre Neto

"böyle bir sütun yok: f.geom" - denemek f.Geometry
vinayan

Spatialite
sürümüm

Yanıtlar:


26

Eğer verilerinizi koymak için istekli iseniz PostGIS (veya Spatialite ) şunu kullanabilirsiniz ST_Snap istediğini yapmak.

Giriş olarak satır katmanı tablosunu ve puan katmanınızı referans olarak kullanın ve toleransı ayarlayın. Bunun gibi bir şey:

SELECT
    f.gid as gid,
    ST_Snap(f.Geometry, g.Geometry, 2) as geom
FROM
    pipe as f,
    (SELECT ST_Collect(Geometry) as Geometry
     FROM mh) as g

Sonuç şudur:

resim açıklamasını buraya girin

Daha sonra özellik tanımlayıcıyı kullanarak geometrilerinizi güncelleyebilirsiniz.


"Seç ... Kimden ..." kodunu nereye koyardım? "Özellik tanımlayıcısını kullanma" ne anlama gelir?
GreyHippo

Dosyalarınızı veritabanına (postgis veya spatialite) aktardıktan sonra, veritabanı tablolarınızı görmek ve SQL Sorgusu'nu (kod) SQL Penceresinde çalıştırmak ve ardından tuvalinize yüklemek için DB Manager'ı kullanabilirsiniz. Bunun sizin için işe yarayıp yaramadığını söyle, sonra güncelleme bölümünü yapacağız.
Alexandre Neto

Alexandre, yukarıdaki güncellemeye bakın. Dosyayı iki spatiallite dosyasına verdim.
GreyHippo

Her iki dosyayı da aynı Spatialite Veritabanına koymalısınız, sadece "pipe" deyin "mh.sqlite" veritabanına sürükleyin. Bundan sonra "mh", "satır" ve "boru" değiştirmek için SQL kodunu güncelleyin. "Gid" i "pipe" kimliğinize de uyarlayın. Bundan sonra sonuçları yürütebilir ve yükleyebilirsiniz.
Alexandre Neto

3

QGIS veya GRASS hakkında fazla bir şey bilmiyorum, ancak bazı hızlı Google'lar GRASS'ta v.clean'i verdiler .

Göz at bu yazı ve bu bir .

QGIS ve GRASS Alternatifleri:

Bunu ArcGIS'de yapsaydım, muhtemelen verilerimi bir Dosya Coğrafi Veritabanındaki bir Özellik Veri Kümesinde depolar ve nokta katmanının satırların uç noktalarında olmadığı alanları tanımlamak için bir Topoloji oluştururdum . Ardından Hata Denetçisi'ni kullanarak hataları düzeltebilirsiniz .

Ancak, muhtemelen en hızlı ve en kolay çözüm FME'de olacaktır. Snapper Tool'u veya daha iyisini AnchoredSnapper Tool'u kullanmayı deneyebilirsiniz . AnchoredSnapper kullanıyorsanız, yapıştırma türünüzün Bitiş Noktası Yapışma olduğundan emin olun. Tabii ki, FME için bir lisansa ihtiyacınız olacak. Ancak, 14 günlük bir deneme sürümü yoksa indirebilirsiniz.


V.clean'a baktım ama sadece bir katman kullanıyor, bir katmanı diğeriyle karşılaştırmam gerekiyor. Ayrıca, daha çok bir QGIS / açık kaynak seçeneği arıyordum.
GreyHippo

1
@GreyHippo, GRASS açık kaynak
artwork21

1
GRASS'ın açık kaynak olduğunu biliyorum, ancak diğer seçenekleriniz değil.
GreyHippo


-1

Manuel yol

Qgis -> Ayarlar -> Yapışma seçenekleri (ve emin değilim ama CadTools uzantısına ihtiyaç duyabilir) ve topolojik düzenlemeyi etkinleştirin.

Otomatik yol

v.clean, QGIS'deki SEXTANTE araç kutusundaki GRASS araçlarında bulunur. PostGIS 2.0'a sahipseniz ST_Snap ve ST_SnapToGrid () (Ve bunu kullanamamanızın bir nedeni yok, çok iyi bir uzamsal araç)

Ticari yol

FME ve MRF aracı (ticari uzantı, bir değerlendirme sürümü vardı. Vas çok iyi).

Ayrıca açık kaynak araçları ile su borusu / kanalizasyon yönetimi ile ilgileniyorum, herhangi bir ipucu var mı?


Bence GreyHippo "manüel olarak yapmak" demek. Sadece Yapıştırma seçeneklerini kullanarak, yapışmayı etkinleştirmek için sarkan her düğümü elle hareket ettirmeniz gerekecek. Yoksa bir şey mi kaçırıyorum?
Jake

Hayır. kördüm.
simplexio

Simplexio, manuel olarak yapmak istemiyorum. Bilmediğim bir eklenti veya işlem umuyordum.
GreyHippo

GRASS v.clean'ı iki katman üzerinde kullanabileceğinizi düşünmedim mi?
GreyHippo

1
doğru hatırlıyorsam çok kısa satırları düzeltebilir. Gördüğünüz gibi, sorun, menhollerinizin doğru yerlerde bulunmaması değil, kanalizasyon şebekenizin topolojik olarak doğru olmamasıdır. Ve bu sadece boru katmanına ihtiyaç duyar. Gördüğüm her şebeke ağı sistemi, her kanalizasyon kavşağında rögar olduğunu varsayar. Bu offcourse doğru topolojiye sahip olmak istediğinizi varsayar.
simplexio
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.