Eu só queria pedir conselhos dos gurus de GIS de código aberto em uma pilha recomendada para usar no meu projeto previsto, pois não entendo completamente os limites do possível na maioria dos pacotes. Sei que posso fazer o que quero usando os vários pacotes da ESRI, mas quero que seja mais barato e aberto para o mundo ver. Estou confiante de que posso enfrentar qualquer desafio e aprender as peças o suficiente para que um projeto aconteça. Só quero evitar seguir o caminho errado.
Visão do meu site: Em termos de interface do usuário, um site sem GIS! Algo mais parecido com whereis.com com tudo (ou quase tudo) sendo feito em caixas pairando acima de um mapa base. As especificidades não são importantes agora, apenas enfatizando nenhuma camada GIS com caixas de seleção em um painel separado, etc. Em termos de interação com o usuário, os usuários registrados podem criar recursos (como locais de bebedouros, trilhas para caminhada, etc.) no topo da base mapear e editar seus próprios recursos. Se possível, edite SOMENTE os próprios recursos que eles criaram. Um mapa colaborativo, realmente.
Ainda estou principalmente no modo de pesquisa, brincando com vários pacotes, mas apenas por uma questão de familiarização geral e não por testes reais (o que exigiria aprendê-los em detalhes primeiro!). O PostGIS definitivamente parece ser o caminho certo a seguir como o (s) banco (s) subjacente (s), com o Geoserver / Mapserver como o mais provável middleware. Definitivamente, os Openlayers serão o mapa escorregadio, pois já estou confortável com ele e conheço seu poder.
Isso me leva a duas questões principais que exigem a maior parte dos conselhos:
1) Qual é a melhor interface do usuário da camada superior para um site como este?
É uma instância personalizada do Django (ou mesmo Django-CMS), ou simplesmente uma instância reunida do GeoExt ou de outra biblioteca (não tenho certeza se você pode fazer um login / registro / interface do usuário completa), um CMS / framework diferente ( não, não drupal ou qualquer coisa que limite!), ou algo totalmente diferente?
2) É possível que os usuários registrados editem apenas seus próprios recursos?
Eu quero evitar os lugares de graffiti em massa, como o OSM e outras experiências de projetos colaborativos. Parece, pelas minhas leituras e conselhos, que o Geoserver não pode ter autenticação de usuário em nível de recurso.
Mapserver pode?
Nem sei se a população de usuários de um site (de um CMS ou estrutura) pode vincular-se diretamente ao geoserver / mapserver.
Se esse conceito não for possível com soluções de código aberto, existe outra maneira de atingir esse objetivo?
Os usuários autenticados editam uma versão não publicada da camada de recurso principal (para não atrapalhar o original) e a mesclam automaticamente à versão publicada a cada 24 horas, mantendo um backup diário do original?
Meio que perdido sobre como atingir essa intenção.
E sim, também olhei para o GeoNode, mas quero apenas um mapa geral (mantenha-o simples) e sua interface do usuário não é interativa o suficiente (antes de entrar no GeoExplorer) ou é muito semelhante ao GIS no GeoExplorer. Parece uma solução muito enlatada para este projeto.
Desculpe por ser tão aberto e terminado aqui e vago, mas espero poder iniciar um caminho no qual o acima é possível e não colidir com a parede daqui a alguns meses, apenas para ter que começar tudo de novo porque o caminho # 1 nunca teve essa funcionalidade desde o início!
Um dos melhores exemplos que posso encontrar é http://www.gpsies.com Eu sei que isso usa folheto, mas não tenho certeza da estrutura e do banco de dados subjacentes. Os usuários podem criar / fazer upload de seus próprios recursos, mas não editar outros.
Respostas:
Como estou criando algo um pouco parecido agora, vou lhe contar como estou fazendo isso e você pode optar por mudar o que quiser dele para outra peça.
O Django (com GeoDjango ) é muito bom para isso como uma estrutura básica para python (novamente, se é isso que você gosta , você pode fazer isso em outra linguagem).
Minha abordagem para edições no nível do usuário é semelhante ao descrito pelo CaptDragon. Eu estou usando a estrutura de autenticação django . Para este projeto, minhas APIs estão sendo criadas usando o Tasty Pie do Django, que já possui uma estrutura que permite a criação de APIs RESTful apropriadas, com autenticação levada em consideração com bastante facilidade.
Meu Mapserver (ou Geoserver ou o que você escolher usar) nunca é exposto diretamente ao mundo exterior (apenas o servidor local tem acesso a eles) ... todos os blocos são servidos usando um servidor de blocos ( geowebcache , tilecache , tilestache seja o que for )
Não preciso mencionar Openlayers, já que você já escolheu isso. Boa escolha.
O PostgreSQL / PostGIS foi outro acéfalo. :)
Como uma biblioteca javascript, você nunca pode dar errado com o jQuery. Se você permitir várias edições, poderá se beneficiar de ter alguma estrutura de seus objetos javascript usando algo como backbone.js . Leve isso com um grão de sal. Algumas pessoas adoram - outras odeiam.
Se você não quer que seu site seja tão feio, faça um favor a si mesmo e use uma estrutura de CSS como Bootstrap ou Compass ou alternativa, por US $ 20, apenas compre um do themeforest ou wrapstrap (se você for de código aberto, poderá Você quer dar uma olhada na licença se quiser comprá-la). Conectar um desses leva cerca de um dia e faz uma enorme diferença na aparência do site!
Pessoalmente, observei o Django-cms (e o Pinax ) várias vezes e nunca consigo me convencer de que vale a pena. Eu nunca me arrependi dessa decisão ainda.
Como você está escolhendo um projeto que exigirá várias versões do seu esquema (quanto mais você desenvolver, mais ele mudará), basta usar o sul . Nem hesite! Seriamente.
É isso que eu usaria, mas o mais adorável do código-fonte aberto é que você pode alterar as partes para atender às suas próprias necessidades.
fonte
Estou usando uma pilha semelhante à de Ragi. Estou perto da versão alfa do meu aplicativo e, neste ponto, parece que as opções estão certas. Aqui está a minha solução:
No servidor:
No cliente:
fonte
É possível que os usuários registrados editem apenas seus próprios recursos?
Parece que isso é possível usando o Cartaro. É baseado no Drupal (eu sei, você não disse nada limitativo como o Drupal, mas ouça!) E permite que os usuários editem apenas seus próprios recursos, entre outras opções. Aqui está uma captura de tela tirada da página Pessoas quando conectado como administrador, que mostra os tipos de permissões que podem ser definidas para os usuários:
Além disso, o Cartaro é executado no PostGIS, GeoServer e OpenLayers, portanto, potencialmente, pode ter tudo o que você está procurando.
Qual é a melhor interface do usuário da camada superior para um site como este?
Não sei qual é a melhor camada superior, mas parece que o Cartaro poderia fornecer o que você está procurando, pois o Drupal tem muitas opções de interface do usuário. Parece que o Cartaro está no início do desenvolvimento (não conheço pessoalmente quem está usando), mas tem potencial.
fonte
Vou abordar a questão 2. É assim que eu resolvo a questão de permitir que os usuários editem seus próprios registros.
Crio meus próprios serviços web RESTFUL ou SOAP (sua escolha), como os
UpdateUserRecord(string WKTLocation, string otherArg)
que se vinculam ao mecanismo de autenticação do seu site.O OpenLayers e o PostGIS lêem e escrevem texto conhecido (WKT), bem como GML e outros formatos padrão, mas eu pessoalmente uso o WKT para passar informações de geometria de volta ao formulário do meu aplicativo, através do serviço web e no banco de dados PostGIS.
Além disso, meus métodos da web, como
UpdateUserRecord
só podem ser chamados por um usuário de sessão autenticado. A401 Unauthorized
é retornado se alguém tentar chamar esse serviço da web. No meu caso, uso .NET e FormsAuthentication com a opção de autenticação usando o OpenAuth2 (Google, Facebook, Twitter, etc.). Isso também pode ser feito em PHP, Java, etc.Assim, você pode criar métodos da Web que chamam o banco de dados PostGIS diretamente e atualizar ou inserir registros da maneira que desejar. E foi assim que eu fiz.
Em seguida, usei o GeoServer para o WFS, as habilidades de consulta WMS e a facilidade de exibir as informações no mapa onde eu forneceria um UserID se a consulta pedisse.
Espero que isto ajude.
fonte