Risposte:
Questa domanda è stata convertita in Wiki della comunità e wiki bloccato perché è un esempio di una domanda che cerca un elenco di risposte e sembra essere abbastanza popolare da proteggerlo dalla chiusura. Dovrebbe essere trattato come un caso speciale e non dovrebbe essere visto come il tipo di domanda che è incoraggiata su questo o su qualsiasi sito Stack Stack, ma se desideri contribuire con più contenuti ad esso, sentiti libero di farlo modificando questa risposta .
È possibile scegliere tra soluzioni con un componente server di mappe o senza. Le soluzioni server ovviamente supportano più dati e applicazioni più sofisticate.
Se sai che QGIS vuole creare visualizzazioni una tantum di dati, consiglierei QGIS2Leaf o Export to OpenLayers 3 che sono entrambi plugin per QGIS che ti consentono di esportare layer in una mappa web. Aggiornamento (basato sul commento di Tom Chadwin): qgis2leaf e qgis-ol3 sono stati ora uniti in qgis2web .
Una via di mezzo opzione è QGIS Nuvola , un'opzione QGIS server ospitato: Basta preparare il progetto a livello locale e quindi pubblicarlo sul web dove si trova in un visualizzatore già pronta. Hanno account gratuiti fino a una determinata dimensione di dati. Quindi non hai bisogno del tuo server se questo è un problema per te.
Se si desidera eseguire il proprio server open source , è possibile iniziare con questa Introduzione al Geoserver del FOSS4G dell'anno scorso: http://workshops.opengeo.org/geoserver-intro/ . Gli strumenti coinvolti sono generalmente Geoserver, PostGIS e OpenLayers. I costi di avvio sono il tempo di lavoro più l'hosting.
È difficile stimare i tempi di distribuzione senza conoscere i casi d'uso.
GeoGATE
collegamento , GeoGATE è fantastico con PostGIS e Geoserver e include centinaia di strumenti già pronti che puoi configurare tramite un pannello di controllo
Penn State ha una classe Open Web Mapping . Dovrebbe essere sufficiente per insegnarti come funziona la mappatura web e anche le tecnologie coinvolte. La maggior parte, se non tutti, degli strumenti utilizzati nella classe sono gratuiti, quindi il costo non dovrebbe essere un problema. Ecco il sommario:
Lezione 0: Orientamento
Lezione 1: Introduzione all'Open Web Mapping
Lezione 2: Web Map Server (WMS)
Lezione 3: Web Feature Server (WFS)
Lezione 4: Extensible Markup Language (XML)
Lezione 5: Advanced Web Map Server
Lezione 6: Geographic Markup Language (GML)
Lezione 7: WFS rivisitato
Lezione 8: Creazione di un'applicazione di mappatura Web
Lezione 9: Creazione di un thin client Web Mapping personalizzato
Divertiti :)
Google Fusion Tables sembra promettente con mappatura e query spaziali
pro: facile da configurare
contro: tutti i tuoi dati sono su server google (buono? o cattivo?)
http://sites.google.com/site/fusiontablestalks/stories
Nota: molti media / aziende di stampa lo stanno utilizzando - Esempio di quotidiano Guardian UK http://www.guardian.co.uk/environment/datablog/interactive/2011/mar/07/carbon-emissions-public-buildings-map
Esiste ora una procedura guidata Fusion accurata che consente di configurare più rapidamente http://gmaps-samples.googlecode.com/svn/trunk/fusiontables/fusiontableslayer_builder.html
Esempi: http://www.latimes.com/news/local/la-me-us-congress-census-map,0,4500533.htmlstory
Uno dei migliori: http://tinyurl.com/Inghilterra-Deprivation-Mapped
Ci sono così tante opzioni là fuori e già molte ottime risposte. Due delle mie scelte preferite che non sono già state elencate qui sono CartoDB e MapBox . Entrambi forniscono hosting e visualizzazione dei dati basati sul Web e alcuni strumenti davvero fantasiosi con prezzi a partire da GRATIS.
Beneficerai di avere un software desktop per ottenere la configurazione dei tuoi dati. ArcMap e Quantum GIS sono entrambe ottime scelte per la parte desktop.
Direi che la forza di MapBox sta nel creare bellissime mappe web con modelli davvero fantastici, facili da usare e pronti per l' uso con elementi dell'interfaccia utente . MapBox richiede un programma desktop chiamato TileMill (anch'esso gratuito) che utilizza un'interfaccia di stile molto simile al CSS.
Il punto di forza di CartoDB è che espone le sue radici PostGIS attraverso un'API SQL.
Entrambi possono essere usati da soli o in combinazione con altre librerie di mapping javascript (ad es. Leaflet , Google Maps , OpenLayers ).
Indipendentemente dalle piattaforme che decidi di iniziare a utilizzare per accedere alla mappatura web, trarrai sicuramente beneficio dall'apprendimento di javascript. Codecademy è un ottimo punto di partenza (anche GRATIS !!).
Ho anche partecipato a una conferenza in cui hanno presentato OpenGeo Suite , che è una pila di OpenLayers, GeoServer, GeoExt e PostGIS. Offrono entrambe le versioni "Enterprise Edition" (versione a pagamento con supporto) o " Community Edition " (gratuita). (Aggiornamento) OpenGeo Suite è ora Boundless Suite.
Un altro pacchetto che è stato dimostrato alla conferenza è stato GeoMoose , che è uno stack di MapServer e OpenLayers.
Potresti prendere in considerazione il download del DVD live di OSGEO , che puoi eseguire in un ambiente di macchina virtuale nel caso in cui non desideri installare un sacco di roba sul tuo computer durante il test. Viene fornito preconfezionato con un sacco di diversi pacchetti software GIS open source, inclusi strumenti di mappatura web.
modificare
A causa della popolarità di questa domanda e risposta, sto aggiungendo la modifica di alcuni contenuti di questo post a causa di cambiamenti con provider e API negli ultimi mesi.
La scelta dell'API è correlata all'ambito e allo scopo del progetto, per non parlare del budget se si desidera effettivamente utilizzare alcune funzionalità specifiche. L'altro avvertimento importante è la tua esperienza di sviluppo web e in quale lingua preferisci o ti interessa.
Penso che il modo migliore per rispondere alla tua domanda sia quello di fornire un buon elenco di API disponibili per te. Eccone tre che mi vengono in mente. Questi non sono affatto tutti!
ArcGIS
API:
Professionisti:
Contro:
Sommario:
ArcGIS ha molto da offrire per i prodotti Web GIS e ha molte risorse per aiutarti lungo la strada. Basta essere consapevoli dei potenziali costi che si verificano quando si desidera pubblicare i propri dati.
API:
Professionisti:
Contro:
Sommario:
Google ha un forte nome nel mercato e servizi online abbastanza affidabili. Assicurati solo di capire i dettagli dei loro usi, in modo da non calpestare le dita dei piedi. La nuova pagina Prezzi e piani è abbastanza utile in tal senso.
Open Source
API (tutte basate su JavaScript):
Professionisti:
Contro:
Sommario:
L'open source è davvero un'ottima opzione per chiunque voglia testare le acque del Web GIS. Con le modifiche e i miglioramenti apportati ogni giorno nella comunità, l'open source può essere il modo economico per soddisfare le tue esigenze geospaziali.
Come ho detto, non sono tutte le scelte che hai, ma almeno ora c'è un post con link per te e gli altri per familiarizzare con alcuni dei principali attori del mondo GIS Web.
Sembra che tu abbia ottenuto le risposte Open Source nella domanda sopra. Se la tua azienda ha il budget, ESRI può essere un'ottima opzione. Per chiarire, le API di webmapping in sé e per sé sono gratuite, tuttavia il server ArcGIS e SDE back-end vi costeranno denaro. Inoltre, saranno necessari software desktop per creare servizi di mappe da utilizzare nell'applicazione di mappatura web. Se hai già accesso a queste risorse o puoi acquistarle, consiglierei vivamente di esaminare le soluzioni ESRI.
Uno dei vantaggi qui è che puoi programmare in varie lingue. Esistono API specifiche ESRI per Flex e Silverlight:
Flex: http://help.arcgis.com/en/webapi/flex/index.html Silverlight: http://help.arcgis.com/en/webapi/silverlight/index.html
Attualmente sembra che la tendenza della programmazione web si stia allontanando dalle soluzioni che richiedono plug-in e sono specifiche del fornitore (sopra) e verso più framework open source e basati su standard. ESRI ha questo coperto con l'API Javascript:
Javascript: http://help.arcgis.com/en/webapi/javascript/arcgis/
Se dai un'occhiata a questi siti Web API, la documentazione è molto buona. Inoltre, sono disponibili forum per l'aiuto della comunità su problemi specifici. Anche il supporto tecnico tramite ESRI è molto buono. Quindi si tratta di prezzo e risorse, se hai già queste applicazioni o hai il budget questo è un percorso eccellente, se non vale la pena esaminare le soluzioni open source sopra.
Se vuoi semplicemente prototipare qualcosa per uno studio di fattibilità per mostrare al tuo capo, che è quello che dovevo fare circa un anno fa, allora per il backend consiglierei Geoserver per la sua interfaccia web intuitiva, supportata da alcuni shapefile semplici. Per il frontend, OpenLayers è una scelta fantastica con molti esempi sul sito Web. Non sono un programmatore web in alcun modo, ma ho trovato un gioco da ragazzi copiare / incollare / modificare i campioni javascript. Ho messo tutto questo in una VM VirtualBox per tenerlo tutto in un posto e non rompere il mio normale ambiente di sviluppo, usando i pacchetti dal repository UbuntuGIS.
Per la produzione, ci sono un sacco di cose là fuori che dipendono dal tuo caso d'uso. Per me, alla fine sono andato con Mapserver perché non è gonfio come Geoserver, in esecuzione come un processo cgi veloce su un web server lighttpd. Avevamo bisogno di WFS-T (che Geoserver supporta immediatamente), ma Mapserver no, quindi abbiamo usato tinyows. Serviamo anche coperture (WCS) supportate da Mapserver e stiamo cercando di integrare Rasdaman per il suo supporto WCS-T. Tutto questo è supportato da un database PostGIS.
Consiglio di suddividere l'applicazione in back-end, middle e front-end e di leggere i pro ei contro di ogni software. Potrebbero esserci solo poche soluzioni per ogni strato, ma ciò aumenta in modo combinatorio.
Credo che ESRI renda i prodotti capaci di fare tutto questo, ma questo costerà. Se il tuo tempo è limitato, allora la rotta commerciale potrebbe essere la strada da percorrere, ma la rotta open source sta andando in alcune direzioni molto interessanti e sospetto che alla fine supererà qualsiasi cosa l'ESRI potrebbe inventare. Ma poi sono un fanboi FOSS di parte :)
Puoi guardare MangoMap www.mangomap.com .
Dovresti essere in grado di creare la mappa desiderata con gli strumenti disponibili.
È ospitato e gratuito, quindi sono necessari pochissimo tempo e sforzi per la distribuzione.
Per le caratteristiche che suggerisci, guarderei qual è lo stack più semplice e facile da installare che soddisfi le tue esigenze. Il software dice "Puoi avere veloce, potente o economico. Scegli due." sicuramente si applica qui.
Se stai solo pianificando di eseguire query semplici come l'identificazione di funzionalità, è probabile che il potere di PostGIS sia eccessivo. È molto più semplice caricare gli shapefile come archivio dati direttamente in GeoServer.
OpenLayers è ancora una volta eccezionale e ha molte funzionalità come il supporto per sistemi di coordinate diversi da WGS84 e Web Mercator ma se non hai intenzione di utilizzare quella funzionalità, guarderei Leaflet , nella mia esperienza ha molto meno curva di apprendimento ripida per i nuovi utenti.
Inoltre, se non hai un requisito che dice che devi ospitare l'app sul tuo server, puoi dare un'occhiata ad alcune delle opzioni ospitate in quanto otterrai molto di più dal tuo investimento. Usando MangoMap o GeoCommons probabilmente finirai con una mappa superiore per i tuoi utenti senza dover scrivere una sola riga di codice.
Se questo è un progetto in cui vuoi scrivere del codice, puoi anche dare un'occhiata a CartoDB e MapBox . Se vuoi saperne di più su tutte queste piattaforme ospitate, ho scritto un ebook gratuito sull'argomento che fornisce tutti i dettagli necessari per selezionarne una.
Divulgazione : sono il fondatore di MangoMap
Ci sono molti punti da cui iniziare quando si sviluppa una mappa web.
Se hai esperienza come sviluppatore web, dovresti iniziare esaminando i vari servizi disponibili che ti consentono di pubblicare una mappa sul web. Ci sono altre domande a cui hai risposto qui su questo sito che ti daranno preziose informazioni sulle differenze tra le piattaforme disponibili.
Se stai ricominciando da capo e non vuoi impegnarti in una particolare piattaforma, affronta le tue esigenze aziendali. Come disegnerai i tuoi dati sulla mappa? Come verranno aggiornati i dati? Chi utilizzerà questo sito? Cosa ne faranno? Prendere queste decisioni in anticipo ti aiuterà a mettere insieme i pezzi o fare delle scelte che sosterranno l'espansione verso un obiettivo.
Per quanto riguarda il costo ... Preferisco prendere in prestito un proverbio moderno: "Buono, veloce, economico. Scegli due." È formalmente definito come il triangolo di gestione del progetto , che descrive l'equilibrio tra costi, pianificazione e ambito per offrire qualità.
Anch'io ho recentemente iniziato il viaggio della mappatura web dopo molti anni in più sul lato del database delle cose.
Ciò che mi ha veramente aiutato è stato l'apprendimento dei principi di programmazione di base, l'utilizzo di MapBasic per MapInfo (o suppongo Python per la folla di esri) mi ha davvero aiutato a capire come "pensano" i computer.
Da lì CodeAcademy è stata una manna dal cielo . È un modo davvero divertente e intuitivo per imparare a programmare. Può portarti dagli esempi di "Hello World" fino a programmi completamente funzionali e interattivi. La curva di apprendimento è graduale e comprende che alcune persone sono dotate di queste cose e altre (come me) non lo sono.
Il secondo consiglio sarebbe quello di installare GeoServer e guardare le richieste demo per vedere come sono strutturati i servizi web e come funzionano. Dai un'occhiata alle anteprime dei livelli per vedere come Javascript e HTML operano insieme. Puoi letteralmente copiare quel codice di anteprima del livello (visualizza l'origine della pagina), salvarlo da qualche parte e iniziare a armeggiare.
Scuole W3 - ha esempi interattivi con cui puoi giocare e adattarti al tuo codice nascente. Se decidi su JavaScript, anche JS Fiddle è molto buono.
Se sei un programmatore Java, dai un'occhiata a Geomajas .
C'è un archetipo maven che ti permette di iniziare in pochi minuti ( vedi qui ). È quindi possibile aggiungere ulteriori livelli ecc.
Puoi usare OpenLayers per il lato client. Stabile, facile e aveva tonnellate di esempi su come usare un WFS (nel tuo caso per connetterti a PostgreSQL) ecc. Geoserver, OSM lo usa per scopi di rendering.
Puoi anche dare un'occhiata a GeoExt che fornisce widget extJS per la costruzione di mappe. Ancora una volta geoext utilizza OpenLayer per il rendering delle mappe.
Esistono anche framework basati su PHP che utilizzano MapServer (OpenLayers già supporta) come GeoMoose , CartoWeb ecc.
Io voto per OpenLayers poiché puoi decidere su tutto il design della pagina web a differenza del framework php in esecuzione su dei binding MapScript che hanno un modello predefinito e ho trovato non facile gestire una base di codice così grande.
Tre competenze necessarie per la maggior parte dello sviluppo Web, inclusa la mappatura Web, sono HTML, CSS e JavaScript. Le risorse per imparare quelle lingue sono ampie. L'argomento su dove iniziare a imparare come sviluppare applicazioni di mappatura web è abbastanza ben coperto dalla domanda di scambio di stack GIS Come iniziare la mappatura Web?
Una risorsa per esaminare lo sviluppo di applicazioni di mappatura Web se si ha un'esperienza di programmazione limitata è la mapbox . Puoi produrre mappe web senza alcuna codifica, anche se penso che sarebbe difficile produrre una mappa web complicata e interattiva come quella che usi nel tuo esempio senza usare un linguaggio di scripting come javascript o python.
Uso leafletjs e penso che sia molto semplice. È basato su JavaScript e può disegnare funzionalità utilizzando varie origini dati. Fondamentalmente, si inserisce il codice della mappa in un file .html e quindi si visualizza il file. Non posso commentare altre API, ma penso che Google sia piuttosto semplice, così come Openlayer.
Inoltre, ci sono servizi come MapBox che non richiedono di ospitare il file html, ma piuttosto di caricare i dati su di essi.
Penso che il modo più semplice per andare con il plugin qgis + qgis2leaflet. Puoi modificare quello che vuoi in qgis che esportarlo in un volantino e caricarlo sul tuo server web. O se scegli il modo più interessante di:
Invece del geoexplorer userei il volantino javascript, perché sembra più bello ed è più fluido ... ma impiega un po 'di tempo a copiare / incollare un po' di codice. ecco un esempio: http://gis.xyz
Ciò che è importante notare è che Web-Gis è un campo vasto, e molto lavoro è già stato fatto su diversi progetti e librerie per aiutare in questo sforzo. Quindi dobbiamo vedere se c'è qualcosa che puoi riutilizzare, invece di ricominciare da zero.
La cattiva notizia è che non esiste una libreria / applicazione popolare per il web mapping in php. La buona notizia è che potresti non averne bisogno.
Ti consiglio di provare prima a capire WebMapping e a comprendere i progetti e le librerie che sono già presenti. Per questo, puoi fare riferimento a queste domande:
Dopo aver compreso le opzioni disponibili, è necessario chiarire le proprie esigenze. Osservando la tua domanda, hai dei requisiti molto basilari: Mostra pacchi sulla mappa Consenti query, Ottieni attributi per i pacchi e mostrali all'utente, sia a seguito di una query, sia quando l'utente fa clic su di essa.
Questo tipo di lavoro è possibile utilizzando Google Maps, ma non lo consiglierei, poiché l'API di Google Maps è un problema con cui lavorare quando si dispone di grandi quantità di dati.
Suggerirei invece di scegliere una soluzione Geoserver / OpenLayers a condizione che tu possa lavorare con JavaScript. Potresti anche non aver bisogno di alcun codice php, se i tuoi dati sono tutti negli attributi delle funzionalità.
Una bella alternativa leggera a OpenLayers, che è la grande libreria javascript popolare per il web mapping, è Leaflet .
Uso Leaflet con GeoServer per creare delle belle mappe, tra cui un po 'di interattività. Richiede una codifica personalizzata, ma non molto, ed è molto più facile da usare rispetto a OpenLayers.
Prima di decidere tra Leaflet e OpenLayers, potrebbe valere la pena dare un'occhiata alla versione imminente che promette un'API ripulita e una migliore documentazione:
OpenLayers 3 è una riscrittura completa della libreria, rivolta alle ultime funzionalità HTML5 e CSS3. La libreria continuerà ad avere un ampio supporto per proiezioni, protocolli standard e funzionalità di modifica da OpenLayers 2.x. La nuova versione della libreria si concentrerà su miglioramenti delle prestazioni, build più leggere, componenti visivi più carini, un'API migliorata e altro ancora. Alcuni dei principali punti salienti sono:
- - - - - - 8 <- - - - - -Un nuovo codebase: offre l'opportunità di ripulire alcuni dei modi "goffi" di fare le cose in OpenLayers. Il team creerà anche con nuovi design API, che saranno più accessibili a tutti.
Documentazione di alta qualità: la nuova versione includerà anche la documentazione con nuovi esempi e progetti predefiniti in OpenLayers 3.0. Fare un toolkit straordinario è qualcosa di più del semplice codice.
Vorrei iniziare con l' API di Google Maps . È gratuito e facile da lavorare. Utilizza Javascript, che può essere appreso tramite una serie di buone risorse. Consiglierei Codecademy se non conosci JS.
Esistono molte fonti di dati gratuite che possono essere incorporate in Google Maps in diversi modi (KML, database, GeoRSS, ecc.). La maggior parte degli stati e molte università hanno archivi di dati gratuiti che possono essere incorporati nella tua mappa.
Uno dei miei siti preferiti per esempi di Google Maps è Google Maps Mania . Ci sono ottimi esempi di mappe che mostrano ciò che è possibile in questa API.
GeoPHP potrebbe valere la pena dare un'occhiata.
GeoPHP è una libreria PHP nativa open source per eseguire operazioni di geometria. È scritto interamente in PHP e può quindi essere eseguito su host condivisi. Può leggere e scrivere un'ampia varietà di formati: WKT (incluso EWKT), WKB (incluso EWKB), GeoJSON, KML, GPX, GeoRSS. Funziona con tutte le geometrie a funzione semplice (Point, LineString, Polygon, GeometryCollection ecc.) E può essere utilizzato per ottenere centroidi, riquadro di selezione, area e un'ampia varietà di altre informazioni utili.
E puoi fare un passo avanti con l' estensione GEOS (supponendo che tu abbia i privilegi di amministratore per l'installazione di GEOS).
Con GEOS ottieni l'intero set di funzioni openGIS in PHP come Union, IsWithin, Touches ecc. Ciò significa che le applicazioni ottengono un utile "set base" di operazioni geometriche che funzionano in tutti gli ambienti e un "set esteso" di operazioni per ambienti su cui è installato GEOS.
Bene, lo script PHP personalizzato potrebbe essere una soluzione più solida (e semplice). Dopotutto, i dati spaziali sono solo righe in un database e possono essere interrogati come al solito. Non sono necessari software GIS per server pesanti e / o orribile sintassi del filtro OGC. Se fossi nei tuoi panni, memorizzerei i dati nel database PostgreSQL con estensione PostGIS, scrivere back-end PHP per interrogare il database e recuperare i dati in formato GeoJSON (guarda questo riassunto ) e un'applicazione Web front-end basata su OpenLayers: è più flessibile dell'API di Google Maps, ma se lo desideri puoi comunque utilizzare le mappe di base di Google.
Per aiuto su quale scegliere, le alternative a ArcGIS Online e la domanda Quali libri, riviste, risorse elettroniche sono più preziosi per espandere la conoscenza delle informazioni geografiche? domanda per risorse di apprendimento.
I costi di mappatura Web includono l'hosting (a pagamento per un sito Web) e lo spazio di archiviazione del server (se si utilizzano i servizi di mappatura, consultare i prezzi di MapBox e CartoDB al mese). In definitiva, conoscere lo sviluppo web sarà molto importante per creare la tua mappa.
Bene, ci sono un paio di librerie di mappatura che puoi usare.
Il primo (e probabilmente il più noto) sarebbe l' API di Google Maps , tuttavia penso che questo possa essere piuttosto complesso se sei relativamente nuovo alla mappatura web.
Suggerirei di dare un'occhiata a Leaflet.js o Mapbox.js . Mapbox.js è stato creato pensando a Leaflet e Mapbox ha alcune fantastiche esercitazioni su varie attività che è possibile eseguire con Mapbox.js. Il volantino ha anche alcuni esempi e risorse .
Ecco alcuni link specifici ad esempi che dovrebbero aiutarti a guidarti nella direzione corretta.
Se hai bisogno di una mappa su cui fai clic in un Paese e di un'immagine visualizzata, puoi dare un'occhiata all'esempio Mapbox per il collegamento a dati esterni
Puoi imparare come il codice interagisce in JSFiddle per il progetto
Se hai bisogno di più documentazione su Mapbox puoi leggere le loro Guide Mapbox o approfondire un po 'di più il codice usando la sezione Esempi
Sono un nuovo webmapper e mi è stato riferito il Data Visualization di Scott Murray per il Web . Il suo ebook può essere letto qui: http://chimera.labs.oreilly.com/books/1230000000345/ gratuitamente. È per "non programmatori", estremamente informativo e ha molti esempi pratici.
È possibile utilizzare UMN Map Server. Qui puoi usare gli script PHP (chiamati script delle mappe). Questo si basa sul server Apache. Se vuoi un database, puoi usare MySQL con estensioni spaziali o PostgreSQL con postGIS ...