Oprogramowanie gvSIG OA Digital Edition 2010 ma topologię narzędzi do wyszukiwania pseudo-węzłów w geometrii liniowej. Ustawiam tolerancję klastra 0,00002 i maksymalną liczbę błędów -10000 dla geometrii liniowej liczby łączy 20000. Ale nieudany wynik.
Czy są jakieś rozwiązania, które znajdują pseudo-węzły w darmowym oprogramowaniu GIS?
Muszę warstwować pseudo-węzły (jedno rozwiązanie tego problemu - aby korzystać z topologii narzędzi ArcInfo, ale dla mnie priorytetem jest korzystanie z wolnego oprogramowania). Geometria liniowa stworzyła kilku użytkowników w QGIS 1.8.0 w bazie danych PostGIS (wer. 2.0.1).
Dodaj nowy obraz: 12 elementów liniowych z trzema pseudo-węzłami w A (linia 4/5), B (linia 6/7), C (linia 9/10). Pseudo-węzły powinny być zamiast tego punktami - dwie cechy liniowe z przecięciem w jednym punkcie (węzeł) powinny być jedną cechą liniową (linia 4/5 - linia 4, ...).
Czy w PostGIS można złożyć żądanie, które spowoduje powstanie warstwy pseudo-węzłów?
Dodaj nowy obraz przykładów pseudo-węzłów: jeśli otrzymuję pseudo-węzły warstwy punktowej warstwy (niebieskie prostokąty), poprawiłem następujące błędy w warstwie liniowej: A - dodaj brakującą geometrię, B - przerywana linia na przecięciu, C - usuń pseudo-węzeł.
Odpowiedzi:
Oto ogólne rozwiązanie, które można wdrożyć za pomocą PostGIS lub dowolnego innego oprogramowania zgodnego z OGC.
Twoim problemem jest „znaleźć pseudo-węzły” ... Ale myślę, że to trochę więcej, „znaleźć niepseudo-węzły i połączyć linie pseudo-węzłów”. Moje rozwiązanie może być wykorzystane w obu przypadkach.
Standardy OGC oferują:
ST_Boundary (geom) : do wykrywania węzłów linii
ST_Dump (geom) : aby umieścić każdy pojedynczy węzeł w rekordzie tabeli SQL.
ST_DWithin, ST_Equals, ST_SnapToGrid, ST_Snap mogą być używane do tolerancji zmian. Używam ST_DWithin.
Możemy przypuszczać, że główny problem można określić za pomocą tych obiektów i właściwości,
są tylko odcinki (z tabeli odcinek ), reprezentowana przez geometrii LineString ... Nie testowane MULTILNE, jeśli masz geometrytype = MULTIPOINT, można podzielić i multilinie odlewane z ST_Dump i ST_LineMerge;
każdy odcinek ma geometrię (ID) gid i kolor (ID) idline .
Pierwszym krokiem jest uzyskanie węzłów pochodzących z linii łączących,
UWAGA: używanie pamięci podręcznej, ponieważ są one szybsze niż widoki. Użyj „WYBIERZ WYBÓR ...”, aby sprawdzić czas procesora, może to zająć dużo czasu.
Tutaj cykle i linie ciągłe (tego samego koloru) są wykrywane jako
ncolors=1
punkty, a pseudo-węzły wedługncolors=2
punktów, więc masz warstwę z tymi punktami.Tabela „dobrych węzłów” zawiera oryginalne „punkty graniczne” i „pseudo-węzłów”.
źródło
array_distinct
funkcja pochodzi z biblioteki postgres.cz . Wszelkie inne błędy, proszę zgłaszać, mogę dodać więcej wyjaśnień tutaj.geom
nathe_geom
. (ST_Dump (x)) pozostaje jako geom, nie jest atrybutem bazy danych.Refractions Research stworzyło narzędzie do czyszczenia linii, które wydaje się robić to, co chcesz.
Kod źródłowy można znaleźć na GitHub.
źródło
Rozwiązanie niewolne: transformator FME + MRF + SmartCleaner
Darmowe rozwiązanie GRASS v.clean (najnowszy QGIS 1.8.0 z narzędziami GRASS jest najłatwiejszym sposobem użycia) i inne narzędzia do czyszczenia topologii
źródło
Oto kroki, aby znaleźć swoje pseudo-węzły za pomocą OpenJump darmowego GIS.
QGIS i gvSIG mają wtyczkę Sextante, więc te same kroki również powinny działać, łączenie
przestrzenne może się nieco różnić.
Do testowania użyłem wersji 1.2.
- zapisz punkt końcowy linii
Sextante przybornik, topologia, wyodrębnij punkty końcowe linii -> endpt_0
- odznacz swoje linie
Sextante przybornik, narzędzia do warstw linii,
połącz sąsiednie linie - zapisz punkty
nieoznaczone linii końcowej Sextante linia -> endpt_1
- punkty końcowe usunięte przez „Połącz sąsiednie linie” to pseudo-węzły
Narzędzia, zapytania, zapytania przestrzenne,
warstwa źródłowa „endpt_0”
Relacja „Przecina”
Warstwa maski „endpt_1”
włącz lub kliknij opcję Uzupełnij wynik
źródło
DIST > 0
jako wyrażenie. Ponadto wszystkie geoprocesy można połączyć w łańcuch w modelu SEXTANTE w celu stworzenia nowego narzędzia, np. „Znajdź pseudonody” .Rozwiązanie do wyszukiwania pseudo-węzłów (i innych reguł topologii) dostępne w QGIS 1.9.0 master (2.0) - wtyczka „Topology Checker”. Linki: wtyczka Topology Checker na YouTube , wtyczka Topology Checker na GitHub
źródło
Za pomocą PostGIS można użyć zmodyfikowanej wersji zapytania, aby znaleźć zawieszki omówione w tym temacie , ponieważ pseudonody to węzły przechwytujące 2 linie liniowe, a wiszące to węzły przechwytujące 1 liniowy.
źródło