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 -
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).
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.
źródło
Odpowiedzi:
„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ą.
źródło