Set di abilità di sviluppo Web GIS [chiuso]


12

Quali tecnologie e set di competenze dovrebbe essere chi desidera studiare / acquisire lo sviluppo del GIS web?

Un'abilità / tecnologia per risposta, per favore.


4
Parla di una domanda ampia ... puoi restringerla a uno stack software specifico? Esri? FOSS? Stai solo cercando di creare mashup di dati su google / point?
Derek Swingley,

Colpa mia. ESRI o FOSS, non è possibile avere entrambi? Spero qualcosa di più complesso dei mashup a punti. Abbastanza abilità per fare qualcosa del genere. opengeohost.com/maps/stlawrence
RK

1
Ottima domanda Diamo un'abilità per risposta.
Adam Matan,

Grazie. Grande idea. Devo pubblicarlo sulla domanda? Ho appena capito che la domanda potrebbe essere ampia. Sarebbe meglio come wiki della comunità?
RK

Risposte:


17

Posso raccontarti la mia esperienza, iniziata come semplice geografo, cercando di utilizzare i prodotti GIS per eseguire analisi spaziali.

Come ho detto, sono un geografo e fin dal college ho iniziato a lavorare con GIS come utente. Successivamente, ho iniziato a fare ricerche su come automatizzare compiti noiosi che dovevo fare spesso. È arrivato per passione e dopo 3 tre anni sono impiegato in una software house multinazionale, che lavora con molti sistemi GIS e sviluppa soluzioni personalizzate.

I miei passi sono stati:

  • Impara bene il GIS. Non iniziare a studiare la programmazione senza avere il diritto fondamentale. Proiezioni e trasformazioni, analisi spaziale, differenze tra il modello raster e vettoriale, ecc.

  • Scopri i fondamenti del database: Introduzione ai sistemi di database , Fondamenti dei sistemi di database . I due libri sono un po 'diversi. Il primo è pesante sulla teoria, il secondo adotta un approccio più pratico.

  • Impara SQL. Questa è in realtà una seconda parte alla prima. Ti aiuterà molto se inizi a pensare in modo "squallido". SQL cambia da fornitore a fornitore. Posso consigliarti con PostgreSQL, che è il fornitore che segue di più lo standard. Se hai bisogno di imparare dialetti specifici, fallo più tardi, quando ne hai davvero bisogno.

  • Programmazione orientata agli oggetti. Sembra una sfida, ma è abbastanza facile una volta che hai capito le basi. Scegli una lingua semplice per farlo. Python è di gran lunga il più semplice. Imparare Python è un ottimo punto di partenza. Ci sono libri Python open source / gratuiti, come Dive into Python . Dopo Python, le scelte interessanti sono: .NET, Java e C / C ++.

  • Programmazione dello studio. Leggi il codice, scrivi il codice. Leggi il codice geospaziale. Scrivi il codice geospaziale. Studia le API classiche: GEOS, JTS, GDAL, ArcObjects (se sei un fan ESRI - ed è un grande vantaggio nel mercato), ecc.

    - Prendi un problema geospaziale e scrivi il codice per risolverlo. Non posso sottolineare quanto sia utile. Questo ti farà impazzire, ma è un ottimo modo per confermare che hai imparato il lato della programmazione e per assicurarti che le tue abilità geospaziali siano aggiornate. Nel mio caso ho scritto una piccola applicazione PostgreSQL per geocodificare gli incidenti stradali.

  • Continua a studiare. Gli standard OGC sono una buona scelta qui.


4

Conosci i database. Qualsiasi sviluppatore GIS li utilizzerà ampiamente.

Soprattutto:

  • DBMS e il modello relazionale . Questi argomenti sono fondamentali per comprendere le basi della memorizzazione dei dati.
  • Almeno una soluzione GIS DB . Preferisco PostGIS , ma esistono anche altre soluzioni .
  • Buona conoscenza di SQL e GIS SQL : come estrarre, inserire, ordinare e manipolare i dati in modo efficiente.
  • Classici compromessi DB : in che modo le diverse operazioni influiscono sull'utilizzo di memoria, spazio su disco, CPU e rete.
  • Indicizzazione. Questo è abbastanza importante per un proiettile separato, perché è il DB Lacuna più comune tra i principianti.
  • Alcune conoscenze su clustering e scalabilità .
  • Conoscenza di base di NOSQL .

Anche se non stai utilizzando i database, stai ancora utilizzando i dati - e in genere è una scommessa sicura che SQL (o uno dei suoi cugini) verrà utilizzato per interrogare i dati.
mwalker,

Sono d'accordo che tutto quanto sopra sono buone cose da sapere, ma sono in cima alla lista per quanto riguarda lo sviluppo del WEB?
Simon,

Che dire di CQL? È anche necessario?
RK

1
@simon - Insufficiente capacità di DB è uno dei problemi più comuni tra gli sviluppatori GIS. IMHO è una delle competenze più importanti (insieme a HTML / CSS, JavaScript e rendering delle mappe). @rk - CQL?
Adam Matan,

Linguaggio di query comune? L'ho incontrato una volta mentre lavoravo con GeoServer.
RK

3

Supponendo che abbiate già il lato GIS delle cose coperte (principi cartografici, ecc.), Farei prima un viaggio su http://www.w3schools.com/ - Eseguo i tutorial in HTML, Javascript, XML, ecc.

Quindi hai diverse piattaforme tra cui scegliere. Sono un po 'di parte nei confronti dell'ESRI e consiglierei di iniziare giocando sulle API http://resources.arcgis.com/content/web/web-apis - Scorrere i concetti / esempi ti dà un'idea reale di cosa puoi raggiungere.
Trovo che scaricare esempi di codice e decodificarli per lavorare con i propri servizi (supponendo che abbiate un'istanza di ArcGIS Server, altrimenti potete usare i server di esempio ESRI) è un buon modo per imparare.

Ci sono anche molti video, dai un'occhiata a questi video di conferenze sulla conferenza Devo suggerire una panoramica delle API di ArcGIS per JavaScript, le migliori pratiche per la progettazione di servizi cartografici efficaci, la riprogettazione delle applicazioni desktop per il Web e l'utilizzo dell'API REST di ArcGIS Server.

Quale piattaforma web sceglieresti? Id ignoro guardando il WebADF (Java / NET) in quanto questo verrà gradualmente eliminato.

Chi sono i tuoi clienti? quali browser useranno? Possono installare plug-in Silverlight o Flash? Hai degli IDE in cui sviluppare? es. Flex è il migliore in FlashBuilder ($$) ma puoi anche usare FlashDevelop che è un'alternativa open source.

Sei più a tuo agio con le tecnologie consolidate o le tecnologie emergenti? Pesare i rischi.
- .NET / Java sono in circolazione da secoli - Silverlight e Flex sono abbastanza nuovi e si discute se HTML 5 eliminerà queste piattaforme

Sia Silverlight che Flex hanno una maggiore interattività pronta all'uso, dove Javascript compensa questo divario facendo affidamento sul Dojo.Framework.

La grande differenza di funzionalità tra ADF Web e API Web è il fatto che le API Web ArcGIS sono interamente lato client.

Lascerò qualcun altro a dare una risposta specifica meno ESRI, ma la scelta ovvia è iniziare a giocare con l' API di Google Maps - Ci sono molte risorse / tutorial per imparare questo.


Wow. Grazie per la visione d'insieme: DI si spinge un po 'di più verso FOSS anche se sono in un paese del terzo mondo e i prodotti ESRI sono fuori portata della maggior parte delle persone qui.
RK,

Si noti che le API Web ArcGIS (e molte altre) eseguono la maggior parte della loro elaborazione sul lato client, ma fanno tutti affidamento pesantemente sui servizi pubblicati e / o sull'elaborazione sul lato server. Quindi, se si desidera fare molto oltre l'assemblaggio di risorse esistenti (ad es. Il geoprocessing), potrebbe essere necessario studiare le tecnologie lato server o fare alcune ricerche approfondite per capire come farlo sul lato client.
mwalker,

Notato. Indagare subito il geo-stack aperto.
RK

3

Javascript, HTML DOM, CSS, HTTP

Se li padroni, puoi fare qualsiasi cosa sul web. L'aggiunta di belle API come SVG renderà forse più facile e le tue applicazioni web più belle, ma IMO non sarai mai in grado di aggirare abbastanza le quattro sopra elencate.


Javascript, HTML DOM, CSS, HTTP Esiste un ordine particolare per cui dovrei impararli? :)
RK,

2
Suggerirei il seguente ordine: HTML, CSS, HTTP, DOM, JavaScript, inoltre PHP e o Python / Ruby per gli script lato server.
underdark

3

Supponendo che tu sia riuscito a sistemare il tuo DB spaziale e il tuo server di mappe [descritto in altre risposte qui] e spazzato via la tua conoscenza di HTML, CSS e JavaScript, potresti iniziare a armeggiare con le librerie client che consumeranno e visualizzeranno i componenti delle mappe all'interno del browser dell'utente.

OpenLayers sembra essere di gran lunga la libreria più referenziata e utilizzata. Ha una buona documentazione ed esempi e puoi trovare alcuni tutorial, ad esempio qui . Le pagine BostonGIS saranno utili anche per te qui, non solo per le cose OpenLayers.

A seconda della tua conoscenza / volontà di imparare Python MapFish è anche una soluzione molto aggraziata. Oppure puoi tuffarti in GeoDjango , tuttavia non posso commentare molto su questa soluzione da solo.

In alternativa, puoi consultare le soluzioni di web mapping OSGeo , passare a Flash o utilizzare qualcosa di commerciale come le API Web ESRI .


3

Concordo con Adam sul fatto che DB spaziale e SQL dovrebbero essere un punto di partenza.

Dopodiché potrebbe valere la pena guardare il secondo livello del tuo futuro geostack web . Avrai bisogno di qualcosa che funga da ponte per "servire" i tuoi dati dal DB spaziale al client nel browser dei tuoi utenti.

Assicurati di comprendere i concetti di WFS e WMS .

Installa e inizia a giocare localmente con il tuo server. Due progetti ben noti abbracciati dalla Open Source Geospatial Foundation sono GeoServer e MapServer . Vale la pena dare un'occhiata anche al mapserver di QGIS . Il server ArcGIS sarebbe [costoso!] Equivalente commerciale qui.

Una volta risolta questa parte, potresti iniziare a giocare con le librerie client.


2

Mapnik o qualsiasi altro strumento di rendering delle mappe per la creazione di riquadri di mappe.

Quasi tutti gli sviluppatori web GIS dovrebbero utilizzare gli strumenti di rendering delle mappe o almeno comprendere i concetti di base di livelli e riquadri.


Grazie. Penso di capire bene strati e tessere. È la parte di rendering con cui ho problemi.
RK

2

Conosci il tuo sistema operativo server, il tuo server web (IIS, Apache, qualunque cosa) e come proteggere le tue cose, anche se qualcuno sta facendo tutto per te.


2

Puoi seguire il mio corso (https://www.e-education.psu.edu/geog585/) che (credo) ti dà una buona introduzione e dovrebbe metterti in funzione.


1

Non posso sottolineare abbastanza il secondo all'ultimo commento di George. Scegli un problema geospaziale e / o Web che ti interessa e scopri le tecnologie richieste mentre lo risolvi.

Se ti prendi il tempo per diventare esperto in tutte le aree sopra elencate, sarà per sempre prima di iniziare effettivamente a costruire un progetto che graffi il tuo prurito.

Vorrei suggerire di iniziare con la creazione di un'app utilizzando OpenLayers per creare un'app che mappa i dati da alcuni servizi dati esistenti. È quindi possibile passare alla creazione di origini dati o servizi personalizzati. Se segui le tecnologie FLOSS, sarai in grado di creare e utilizzare le tue app ovunque senza costi di licenza e problemi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.