Powielone dane z MapServer - Wersja do druku +- Forum QGIS (http://forum.quantum-gis.pl) +-- Dział: Web GIS (http://forum.quantum-gis.pl/forum-3.html) +--- Dział: OpenLayers (http://forum.quantum-gis.pl/forum-12.html) +--- Wątek: Powielone dane z MapServer (/thread-356.html) |
Powielone dane z MapServer - Umberto - 10-01-2011 Cześć! Jako nowy, chciałbym się z Wami przywitać I jednocześnie zadać pytanie, które spędza mi sen z powiek od kilku dni... Mam dane postgisowe, które są na pewno poprawne (QuantumGIS wyświetla je bez problemu). Uruchomiłem MapServer, co by mi te dane publikował, w przeglądarce nawet mogę zobaczyć obrazek, co już jest niewielkim sukcesem. Jednak gdy próbuję wyświetlić dane z MapServera w OpenLayers, dane są powielone, obrazki obok siebie. Gdy zmieniam skalę, nic właściwie się nie zmienia: wciąż obrazki są tego samego rozmiaru i wypełniają całą dostępną przestrzeń. Dane mam zapisane w PostGis w EPSG:2180, co - mam nadzieję, że nie ma tutaj pomyłki - jest jednym z odwzorowań dla Polski. Macie jakieś pomysły, dlaczego mam to powielenie? Jeśli to zbyt enigmatyczne, chętnie rozwinę swoją wypowiedź RE: Powielone dane z MapServer - borys - 10-01-2011 A pokaż swój plik .map (tylko hasło do postgisa wymaż ) i kod OpenLayers (a co najmniej: tworzenie mapy, tej warstwy oraz wstępny zoom mapy) RE: Powielone dane z MapServer - Umberto - 10-01-2011 Staram się uzyskać cokolwiek, na dodatek to dopiero mój wstęp do MapServera, więc bądź wyrozumiały MapFile: Kod: MAP Kawałek z OL, tworzący mapę: Kod: map = new OpenLayers.Map("ap_open_layers_map", { controls: [] }); Kawałek z OL, tworzący warstwę WMS: Kod: var roads = new OpenLayers.Layer.WMS("Osie dróg", "http://hubmapserver.org/cgi-bin/mapserv?", Wstępny zoom w OL: Kod: map.setCenter(new OpenLayers.LonLat(16.9, 52.4), 10); RE: Powielone dane z MapServer - borys - 10-01-2011 Najpierw podłącz jakiś działający WMS, serwujący w układzie 1992 - jak w przykładzie poniżej. To obiekt map, a nie warstwę, trzeba skonfigurować do pracy w układzie 1992. maxScale wyznacza zerowy poziom zoomu, więc gdy dalej w komendzie MapCenter podaję poziom 2, to on jest liczony od tego miliona. Współrzędne podajesz w układzie 92, a nie w stopniach. W warstwie nie ustawiasz już układu i jednostek, weźmie to z mapy. Kod: <html> Potem próbuj podłączyć swojego MapServera RE: Powielone dane z MapServer - m_k - 10-01-2011 Jak już wspomniał Borys, extenty podaje się w układzie mapy (czyli tutaj 1992) - zarówno w OpenLayers jak i Mapserverze. Możesz też podejrzeć ten plik http://bpn.e-mapa.net/mapa.js - mapa OL i warstwy WMS w układzie 92 - choć może trochę zagmatwane i niezbyt eleganckie RE: Powielone dane z MapServer - Umberto - 10-01-2011 Bardzo Wam dziękuję za pomoc. Pomogło! Przeniosłem opis odwzorowania do obiektu OL.Map i z definicji warstwy OL.Layer.WMS usunąłem mode: 'map'. Poprawiłem też wyśrodkowanie na współrzędne odwzorowania - tak w OL, jak i w mapfile'u. Wreszcie widzę swoje warstwy! Mam teraz jeszcze jedno pytanie. Te wszystkie modyfikacje spowodowały, że położenie myszy (OL.Control.MousePosition) przestało wyświetlać współrzędne geograficzne (Lon/Lat), wyświetla współrzędne odwzorowania. Czy można coś z tym zrobić? BTW: miałem już jedną warstwę w 92 wczytywaną, jednak teraz po tych zmianach nareszcie nie jest taka rozciągnięta w poziomie i zaczyna przypominać kawałek Polski. Warstwa, którą wstawił Borys też wygląda całkiem zgrabnie RE: Powielone dane z MapServer - borys - 11-01-2011 Żeby wyświetlać współrzędne w stopniach, obok parametru mapy projection musisz ustawić też displayProjection. Ale to nie wystarczy, bo Ola ma wbudowaną reprojekcję tylko między popularnymi światowymi układami. Żeby to zadziałało z układem 92, musisz ściągnąć i podłączyć w htmlu bibliotekę Proj4js oraz dopisać w swoim skypcie deklarację układu 92: Kod: Proj4js.defs['EPSG:2180'] = '+proj=tmerc +lat_0=0 +lon_0=19 +k=0.9993 +x_0=500000 +y_0=-5300000 +ellps=GRS80 +units=m +no_defs'; RE: Powielone dane z MapServer - Umberto - 11-01-2011 Dzięki, spróbuję na pewno. Dam znać, jak poszło. |