Wizualizacja plików kształtów 3D za pomocą Mapserver i Postgis
17
Zastanawiam się, czy istnieje sposób na wizualizację danych 3D za pomocą serwera map? Pliki 3D .shp znajdują się w bazie danych Postgis, a ja już podłączyłem mapserver do bazy danych, ale z prostą warstwą w pliku map.
Dla mnie MapServer jest serwerem mapowania stron internetowych i nie można na nim wizualizować danych 3D. Z ArcGis Explorer, tak !!
Jakie dane próbujesz wyobrazić sobie i jak chcesz uwzględnić trzeci wymiar? odpowiedź prawdopodobnie nie jest, ale mogą istnieć obejścia w zależności od tego, co próbujesz zrobić.
scw
Chcę tylko zwizualizować moją mapę hipsometryczną z liniami 3d nad nią. Coś jak funkcja GRASS nviz.
przeciw przepływowi
Odpowiedzi:
4
Jednym ze sposobów może być pozwolenie PostGIS na wykonanie projekcji 3D. Kilka miesięcy temu wykonałem kilka prostych testów, aby wizualizować nadchodzące funkcje odległości 3D, takie jak ST_3DShortestLine.
Po prostu użyłem ST_RotateX, ST_RotateY i ST_RotateZ, aby geometria 3D „pokazywała więcej niż górną część kamery”.
Bardziej eleganckie i wydajne byłoby wykonanie wszystkich przekształceń za pomocą ST_Affine.
Wydaje mi się, że dzięki zaawansowanemu użyciu tej funkcji można także uzyskać perspektywiczny widok 3D.
Problem, o ile próbowałem, polega na tym, że obraca wszystko wokół origo. Ale to również powinno być możliwe do obejścia.
W ten sposób powinieneś zmusić MapServer do prezentacji danych wizualnie jak 3D, ale MapServer widzi tylko płaską geometrię 2D.
Jeśli komuś się to uda, jestem zainteresowany. Pomyślałem o stworzeniu w ten sposób fałszywej funkcji 3D w postgisonline.org. Ale nie mam wiedzy i czasu, aby wymyślić, w jaki sposób należy wykonać transformacje za pomocą ST_Affine, aby zarówno uzyskać widok perspektywiczny, jak i obrócić się wokół środka mapy tekstowej zamiast obracać się wokół oryginału.
MapServer nic dla ciebie nie zrobi. Trzeba będzie zaktualizować do najnowszej wersji, aby mieć nawet szansę, ponieważ poprzednie wersje po prostu usuwały trzeci wymiar w zapytaniu do bazy danych. Najlepiej jest wypróbować GeoServer i obsługę KML i sprawdzić, czy można wizualizować w Google Earth. Lub jeśli to nie wystarczy, napisz mały skrypt PHP, aby wyciągnąć dane z PostGIS za pomocą funkcji ST_AsKML () i owinąć nim nieco stylizacji. Nie ma jednak magii!
Możesz renderować mapę hipsometryczną jako Hillshade, a następnie nakładać linie 3D, aby wyświetlać tylko dane 2D. Jeśli chcesz pójść dalej, możesz użyć oprogramowania do renderowania 3D, aby rzutować cienie z linii 3D na mapę hipsometryczną, co powinno dać iluzję wysokości twoich linii. Ale sam Mapserver nie pokaże rzeczy w 3D
Odpowiedzi:
Jednym ze sposobów może być pozwolenie PostGIS na wykonanie projekcji 3D. Kilka miesięcy temu wykonałem kilka prostych testów, aby wizualizować nadchodzące funkcje odległości 3D, takie jak ST_3DShortestLine.
Po prostu użyłem ST_RotateX, ST_RotateY i ST_RotateZ, aby geometria 3D „pokazywała więcej niż górną część kamery”.
Bardziej eleganckie i wydajne byłoby wykonanie wszystkich przekształceń za pomocą ST_Affine.
Wydaje mi się, że dzięki zaawansowanemu użyciu tej funkcji można także uzyskać perspektywiczny widok 3D.
Problem, o ile próbowałem, polega na tym, że obraca wszystko wokół origo. Ale to również powinno być możliwe do obejścia.
W ten sposób powinieneś zmusić MapServer do prezentacji danych wizualnie jak 3D, ale MapServer widzi tylko płaską geometrię 2D.
Jeśli komuś się to uda, jestem zainteresowany. Pomyślałem o stworzeniu w ten sposób fałszywej funkcji 3D w postgisonline.org. Ale nie mam wiedzy i czasu, aby wymyślić, w jaki sposób należy wykonać transformacje za pomocą ST_Affine, aby zarówno uzyskać widok perspektywiczny, jak i obrócić się wokół środka mapy tekstowej zamiast obracać się wokół oryginału.
/ Nicklas
źródło
MapServer nic dla ciebie nie zrobi. Trzeba będzie zaktualizować do najnowszej wersji, aby mieć nawet szansę, ponieważ poprzednie wersje po prostu usuwały trzeci wymiar w zapytaniu do bazy danych. Najlepiej jest wypróbować GeoServer i obsługę KML i sprawdzić, czy można wizualizować w Google Earth. Lub jeśli to nie wystarczy, napisz mały skrypt PHP, aby wyciągnąć dane z PostGIS za pomocą funkcji ST_AsKML () i owinąć nim nieco stylizacji. Nie ma jednak magii!
źródło
Możesz renderować mapę hipsometryczną jako Hillshade, a następnie nakładać linie 3D, aby wyświetlać tylko dane 2D. Jeśli chcesz pójść dalej, możesz użyć oprogramowania do renderowania 3D, aby rzutować cienie z linii 3D na mapę hipsometryczną, co powinno dać iluzję wysokości twoich linii. Ale sam Mapserver nie pokaże rzeczy w 3D
źródło