Eu tenho um conjunto de sites na casa dos milhares. Nem todos os usuários veem os mesmos sites no mapa - portanto, a ACL. Os dados são armazenados em um banco de dados não GIS (mssql, ora, etc) e agora são recuperados com uma consulta SQL padrão e retornados ao cliente (OpenLayers) com um JSP.
O código atual já está otimizado para fazer cluster do lado do cliente (menos bagunça no cliente, mas todos os dados estão lá), recuperação de caixa delimitadora (para um subconjunto de dados, mas é necessário ir ao servidor para todos os panorâmica / zoom para novos dados) e até cluster do lado do servidor (para reduzir os dados enviados ao cliente).
Em vez disso, gostaria de gerar imagens / blocos para todos os meus dados, semelhante à maneira como o Google Maps mostra toneladas de pequenos pontos vermelhos para todos os resultados - http://bit.ly/d73qrw [google maps search for "coffee"] e exibir no cliente. E quando clicado, faça uma chamada rápida ajax para um serviço WMS para obter informações. Essa é a ideia pelo menos.
Mas aqui está o problema - não posso simplesmente configurar um serviço WMS padrão na frente dos meus dados, porque nem todos os usuários veem os mesmos dados. Existe uma maneira de gerar esses blocos rapidamente ou tornar o WMS compatível com ACL?
edit - 22/09/2010 - Então eu descobri como o Google gera os blocos, ou melhor, a tecnologia por trás dele. Eles estão usando o Google Fusion Tables. Armazene N linhas em suas tabelas e, se os dados tiverem lat / lon, o produto Fusion Table poderá gerar os blocos rapidamente (!). Esse é o tipo de coisa que estou procurando - mapa de desempenho com toneladas de dados. Mas é claro que preciso que ele seja controlado pela ACL. Faz sentido escrever uma implementação leve e personalizada da especificação WMS ou modificar um produto existente? Embora o geoserver pareça muito "apenas" modificado para dar suporte à ACL.
edit - 27/09/2010 - Mais algumas informações desde a adição de recompensa. Meus dados estão no Oracle. Ora espacial não está ativado. No momento, os dados são extraídos no nível de negócios e convertidos em dados, enviados ao cliente onde o cliente coloca os "pontos" no mapa. A ACL é feita no nível da lógica de negócios, não no DB ou no ActivDir ou algo assim. A autenticação é simples, mas a Autorização não é e, portanto, teve que ser capturada no código. Gostaria de saber como criar melhor um serviço WMS para exibir milhares de "pontos" no mapa, onde cada usuário verá um subconjunto diferente de pontos. A resposta é um CQL_FILTER? Mas então como são definidos os parâmetros? Uma ideia que tenho agora é fazer um processo em duas etapas. Primeiro, execute a consulta interna para obter a lista de IDs que o usuário permitiu ver e, em seguida, crie uma string de solicitação WMS com esses IDs no parâmetro CQL_FILTER. Existe algo que simplifique esse processo? E se eu for com isso, como posso adicionar essa camada como uma camada "WMS" a um cliente Open Layers, já que para OL o ponto final é o meu código para obter IDs do DB e não o serviço WMS real, por exemplo, GeoServer?