Znikające cechy punktów w Geoserver przy użyciu WMS

10

Mam plik kształtu z około 6500 punktami na całym świecie, który próbuję obsłużyć w Geoserver 2.2.1 przy użyciu WMS. Wszystko było w porządku, dopóki nie zaimplementowałem funkcji filtrowania w mojej aplikacji klienckiej, która korzysta z ulotki. Kiedy dołączam CQL_FILTER (filtr atrybutów, a nie przestrzenny) do zapytania WMS, zauważyłem brak funkcji po pomniejszeniu. Kiedy powiększyłem widok, czasem się pojawiały, ale nie zawsze. Zobacz zdjęcie poniżej -

Porównanie obok siebie

Na poziomie powiększenia po lewej stronie Atlanta nie jest wyświetlana. Kiedy powiększam, to jest. Czasami jednak nawet punkt w Tampie nie jest wyświetlany na poziomie powiększenia po lewej stronie. Jeśli pomniejszę 3 kolejne poziomy, żadne punkty w ogóle nie będą wyświetlane. Nie jestem pewien, czy problemem jest parametr CQL_FILTER, ponieważ przy 6500 punktach trudno zauważyć kilka brakujących punktów w skali globalnej, ale konkretny filtr, który pokazuję tutaj jako przykład, filtruje tylko 3 funkcje, a kiedy Brakuje 1 do 3 z nich, w zależności od stopnia powiększenia, który jest szczególnie zauważalny.

Mogę odtworzyć to samo zachowanie w podglądzie własnej geoservera za pomocą filtra CQL w zaawansowanych opcjach mapy, więc jestem całkiem pewien, że nie jest to moja aplikacja kliencka.

Jeśli chodzi o własne kroki związane z debugowaniem tego problemu, wypróbowałem domyślny plik stylu / sld punktów, aby wykluczyć własne style warstw. Wyłączyłem wszystkie buforowanie, o którym wiem. Dokładnie sprawdziłem, czy moje projekcje są prawidłowe - utworzyłem plik kształtu w ArcGIS 10, używając WGS_1984_Web_Mercator_Auxiliary_Sphere jako projekcji, a warstwa jest ustawiona na EPSG: 3857 w geoserver, co moim zdaniem jest równoważne. Uaktualniłem także z geoserver 2.2 do 2.2.1 i miałem ten sam problem w obu. Usunąłem również plik indeksu przestrzennego geoservera (.qix) i pozwoliłem go odtworzyć, ponieważ widziałem podobne problemy w Arc z uszkodzonymi indeksami przestrzennymi, ale oczywiście to też nie działało.

Oto migawka z własnego podglądu warstwy Geoservera z włączonym filtrem CQL i powiększonym do tego samego obszaru, jak pokazano powyżej. Czerwone kółko jest mniej więcej tam, gdzie powinienem zobaczyć inny punkt (Atlanta).

Przykład Openlayers

Próbowałem ulepszyć każde inne ustawienie, o jakim tylko mogę pomyśleć, ale nie mam szczęścia. Przeglądałem również dzienniki geoservera i włączyłem pełne rejestrowanie i nie widzę żadnych błędów / wyjątków. Nie widzę też złych próśb w narzędziach programistycznych Chrome.

Jeśli brakuje mi krytycznych informacji, podam, co mogę, ale jest to aplikacja wewnętrzna / niepubliczna.

MWrenn
źródło
1
Wykluczając to, co oczywiste: czy przypadkiem masz style zależne od skali? (tzn. punkt jest wyświetlany tylko między niektórymi skalami)
unicoletti
1
Czy możesz sprawdzić, czy wartości w VENUE_TYPE są prawidłowe / spójne? Niespójne wyniki, które widzisz, mogą wynikać z tego, że funkcje są zwracane w innej kolejności (z powodu niewielkich różnic w bboxie), a jeden z nich jest w jakiś sposób „zły”, co powoduje zatrzymanie renderowania, zanim dotrze on do Atlanty. Mądrze może być przetestowanie eksportu danych do innego formatu, a następnie 1) sprawdzenie, czy wszystko zostało przeniesione zgodnie z oczekiwaniami, a następnie 2) ponowne przetestowanie filtra / renderowania
tomfumb,
1
@unicoletti Na warstwie wyświetlanej na zrzucie ekranu istnieją zależności skali, ale widzę ten sam wynik, gdy używam domyślnego stylu „punktu” dostarczonego przez Geoserver, który nie ma zależności skali, widzę dokładnie te same punkty znikające w tych samych skalach .
MWrenn
1
@tomfumb Przejrzałem wartości w kolumnie VENUE_TYPE i wszystkie są alfabetyczne w języku angielskim, z wyjątkiem okazjonalnego ukośnika „/” lub ampersand „&”. Wyjmę płyty z ukośnikami i znakami handlowego i sprawdzę, czy to coś zmieni. Na marginesie, DBF tego pliku kształtu jest zakodowany w UTF-8, który również ustawiłem w geoserver. Czy to może coś zmienić?
MWrenn
4
@MWrenn Nie jestem pewien, więc nie spróbuję odpowiedzieć, ale eksport danych do innego formatu powinien pomóc ustalić, czy problem stanowi obecny sklep / format. Być może spróbuj otworzyć Shp w ArcMap lub QGIS, ograniczając obszar do skrzynki przykładu, a następnie sprawdź atrybuty zawartych funkcji - czy zawierają one znaki specjalne, na które kodowanie może mieć wpływ?
tomfumb

Odpowiedzi:

1

„Rozwiązaniem”, które wdrożyłem, było zaimportowanie plików shapefile do bazy danych postGIS przy użyciu shp2pqsql, co rozwiązało funkcje punktów znikania przy użyciu filtra CQL. Mogę zrobić dokładnie to samo żądanie filtra CQL i zobaczyć teraz wszystkie punkty na wszystkich poziomach powiększenia. Następnie musiałem dostosować kilka zautomatyzowanych procesów, aby zaktualizować bazę danych postGIS zamiast plików kształtów, ale zajęło to tylko kilka godzin.

Nadal nie jestem pewien, jaka jest pierwotna przyczyna znikania cech punktów. Próbowałem różnych projekcji i programów piszących pliki kształtu (QGis, ESRI, shapefile.py lub pyShape lub coś takiego) za każdym razem z tym samym dokładnym rezultatem. Nie jestem ekspertem od geoservera, więc waham się nazwać go błędem i prawdopodobnie jest to coś szczególnego w mojej konfiguracji, ale udało mi się odtworzyć w dwóch różnych instancjach działających na dwóch różnych komputerach geoservera z systemem 2.2 i 2.2. 1, oba w systemie Windows (One Xp, Server 2003).

Nie mogę również publikować źródłowych plików kształtów, więc sądzę, że podstawowa przyczyna pozostanie tajemnicą.

MWrenn
źródło