Recursos de ponto de desaparecimento no Geoserver usando WMS

10

Eu tenho um shapefile com aproximadamente 6.500 pontos em todo o mundo e estou tentando servir com o Geoserver 2.2.1 usando o WMS. Aparentemente, tudo ficou bem até que eu implementei um recurso de filtragem no meu aplicativo cliente, que usa o folheto. Quando anexo um CQL_FILTER (filtro de atributo, não espacial) à consulta WMS, notei os recursos ausentes quando o zoom foi diminuído. Quando eu aumentava o zoom, eles às vezes reapareciam, mas nem sempre. Veja a imagem abaixo -

Comparação lado a lado

No nível de zoom à esquerda, Atlanta não é exibida. Quando eu zoom, é. No entanto, às vezes nem mesmo o ponto em Tampa é exibido no nível de zoom à esquerda. Se diminuir o zoom em mais 3 níveis, nenhum ponto será exibido. Não sei se o problema é o parâmetro CQL_FILTER, pois com 6.500 pontos, é difícil notar alguns pontos ausentes em escala global, mas o filtro específico que estou mostrando aqui como exemplo filtra apenas três recursos e quando Um a três deles estão ausentes, dependendo do nível de zoom, é particularmente perceptível.

Posso recriar esse mesmo comportamento na visualização da camada do geoserver usando o Filtro CQL nas opções avançadas de mapa, por isso tenho certeza de que não é meu aplicativo cliente.

Quanto às minhas próprias etapas de depuração desse problema, tentei o arquivo padrão style / sld do Points para descartar meu próprio estilo de camada. Eu desliguei todo o cache que eu conheço. Verifiquei duas vezes se minhas projeções estão corretas - criei o shapefile no ArcGIS 10 usando WGS_1984_Web_Mercator_Auxiliary_Sphere como projeção, e a camada está definida como EPSG: 3857 no geoserver, o que acho equivalente. Também atualizei do geoserver 2.2 para 2.2.1 e tive o mesmo problema em ambos. Também apaguei o arquivo de índice espacial do geoserver (.qix) e o deixei recriar, pois vi problemas semelhantes no Arc com índices espaciais corrompidos, mas obviamente isso também não funcionou.

Aqui está um instantâneo da visualização da própria camada do Geoserver com o Filtro CQL ativado e ampliado na mesma área como mostrado acima. O círculo vermelho é aproximadamente onde eu deveria estar vendo outro ponto (Atlanta).

Exemplo de Openlayers

Tentei ajustar todas as outras configurações em que consigo pensar, mas não estou tendo sorte. Também examinei os logs do geoserver e ativei o registro detalhado, e não vejo nenhum erro / exceção. Também não vejo solicitações ruins nas ferramentas de desenvolvedor do chrome.

Se estiver faltando alguma informação crítica, fornecerei o que puder, mas esse é um aplicativo interno / não público.

MWrenn
fonte
1
Excluindo o óbvio: você, por acaso, tem estilos dependentes de escala? (ou seja, um ponto é apresentado apenas entre certas escalas)
unicoletti
1
Você pode verificar se os valores em VENUE_TYPE são válidos / consistentes? Os resultados inconsistentes que você está vendo podem ser devidos a recursos serem retornados em uma ordem diferente (devido a pequenas diferenças na bbox) e um deles é "ruim" de alguma forma, fazendo com que a renderização pare antes de atingir Atlanta. Pode ser sábio para teste de exportar seus dados para um formato diferente, em seguida, 1) verificar tudo mudou como o esperado e, em seguida, 2) re-testar o filtro / render
tomfumb
1
@unicoletti Na camada exibida na captura de tela, existem dependências de escala, mas vejo o mesmo resultado quando uso o estilo padrão de 'ponto' fornecido pelo Geoserver, que não possui dependências de escala, vejo exatamente os mesmos pontos desaparecendo nas mesmas escalas .
MWrenn
1
@tomfumb Examinei os valores na coluna VENUE_TYPE e todos são alfanuméricos em inglês, exceto por uma barra invertida ocasional '/' ou e comercial '&'. Vou gravar os discos com barras ee comercial e ver se isso faz diferença. Como uma observação lateral, o DBF desse shapefile é codificado em UTF-8, que eu defini no geoserver também. Isso poderia fazer a diferença?
MWrenn
4
@MWrenn Não tenho certeza, então não tentarei responder, mas exportar os dados para outro formato deve ajudar a determinar se o arquivo / formato atual é o problema. Talvez tente abrir seu Shp no ArcMap ou QGIS, restringindo a área à bbox do seu exemplo e depois inspecionando os atributos dos recursos contidos - eles incluem caracteres especiais que podem ser afetados pela codificação?
tomfumb

Respostas:

1

A "solução" que implementei foi importar os shapefiles para um banco de dados postGIS usando shp2pqsql, que resolveu os recursos do ponto de desaparecimento ao usar um filtro CQL. Posso fazer exatamente a mesma solicitação de filtro CQL e ver todos os pontos em todos os níveis de zoom agora. Tive então que ajustar alguns processos automatizados para atualizar o banco de dados postGIS em vez de shapefiles, mas levou apenas algumas horas.

Ainda não tenho certeza da causa principal dos recursos dos pontos de desaparecimento. Tentei diferentes projeções e escritores de shapefile (QGis, ESRI, shapefile.py ou pyShape ou algo assim) com o mesmo resultado exato todas as vezes. Eu não sou especialista em geoserver, por isso hesito em chamá-lo de bug, e provavelmente é algo específico da minha configuração, mas consegui reproduzir em duas instâncias diferentes executando em dois computadores diferentes do geoserver executando 2.2 e 2.2. 1, ambos no Windows (One Xp, no Server 2003).

Também não sou capaz de postar os shapefiles de origem, então acho que a causa raiz continuará sendo um mistério.

MWrenn
fonte