Procurando aconselhamento sobre o roteiro genérico de pacotes de código-fonte aberto? [fechadas]


17

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.


5
A parte sobre o graffiti do OpenStreetMap provavelmente é um pouco equivocada; OSM tem vandalismo ocasional, mas é a exceção, não a norma. As permissões por usuário têm a falha óbvia de que a maioria dos usuários é transitória e, portanto, você terá dados inacabados ou indesejados, sem que outras pessoas possam concluí-lo ou removê-lo.
tmcw

Esse é um ponto muito válido, e eu vou ter em mente. Com os processos de backup adequados, um modelo aberto pode ser o mais gratificante. Estou tão longe de me desenvolver neste momento que tenho muito espaço para aprender e desenvolver idéias. Obrigado!
Jeremy

Respostas:


8

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.


Obrigado pela ótima informação, junto com todos os outros. Definitivamente, isso ajuda a restringir meu foco à medida que avança.
21412 Jeremy

O Bootstrap parece excelente. Você pode nos indicar algum exemplo de site de mapeamento que o utilize?
Stephen Lead

6

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:

  • Servidor Ubuntu + servidor web apache + apache tomcat.
  • Postgresql + postgis como banco de dados.
  • Geoserver, (no meu caso, eu o uso apenas para rasters).
  • Django Framework + Tastypie. Tastypie atende a todos os vetores por meio da API e os usuários têm permissão "por objeto".
  • python-gsconfig para controlar o servidor geográfico do python.
  • relatórios jasper para gerar pdfs.
  • pyjasper para controlar relatórios de jasper do python.
  • Biblioteca geoestatística de alto desempenho para interpolação.

No cliente:

  • ExtJs 4 -> Isso é fantástico, o extjs funciona muito bem com o tastypie e você tem muitas coisas trabalhando fora da caixa, como janelas e tabelas. Comecei a usá-lo em código puro, mas em outro uso o Sencha Architect 2, que ajuda muito.
  • OpenLayers -> Com dois métodos inseridos, um em uma loja extjs e um em uma camada de openlayers, você os atualiza quando os dados são alterados.

Definitivamente vou pesquisar a opção tastypie, parece promissor. Muito útil!
Jeremy

4

É 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:

Permissões do Cartaro

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.


1
Aprecio a informação, não sabia que Cartaro tinha essa capacidade. Por enquanto, vou me ater ao modelo básico que os outros mencionaram (pelo menos do ponto de vista da pesquisa / aprendizado), mas posso me aprofundar um pouco mais neste CMS. Eu dediquei cerca de uma hora a alguns meses atrás e fiquei menos do que impressionado inicialmente, mas, para ser justo, eu não tinha muita chance na época.
21412 Jeremy

3

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 UpdateUserRecordsó podem ser chamados por um usuário de sessão autenticado. A 401 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.


Isso ajudou muito, além de várias abordagens nos mesmos princípios básicos. Tenho um pouco mais de confiança, posso fazer isso acontecer com o foco correto no aprendizado. Obrigado também!
21412 Jeremy
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.