Wednesday 28 December 2016

How to connect OpenLayers to PostGIS data?


I have read in OpenLayers how to load KML, GeoJSON etc. vector files in OpenLayers. But how can I connect to PostGIS data. If not, why should I upload my data to PostGIS then instead of directly putting my data using WebServices. Am I missing anything?


And I want to load this vector data so that one can see the attributes by clicking on the features. I need PostGIS because in future I want to enable queries. I think it's only possible by maintaining a database like PostGIS. But how using OpenLayers?


I have read OpenLayers Beginner's Guide, but nowhere it is mentioned. Please help!!



Answer




Unfortunately you cannot connect a web page directly to a database because of security concerns, normally you need some middleware to join the two together.


So for your example and if you want to stick with Open Source software you could easily use GeoServer as your geographic server to serve your data from your PostGIS database to your OpenLayers HTML web page.


Why this is good is that GeoServer will serve the data in a standard way, OGC Web Map Server (WMS) or Web Feature Service (WFS) and both are understood by OpenLayers and many other APIs (ESRI ones, Leaflet etc) and other Desktop GIS software (ESRI, MapInfo, QGIS, uDig etc)


So I would look at the GeoServer documentation getting started which walks you through how to connect GeoServer to PostGIS and then serve the data.


http://docs.geoserver.org/stable/en/user/gettingstarted/index.html


If you are new to these types of things there is no better place to start than the OpenGeo tutorials


http://workshops.opengeo.org/


I would definitely stick with your data being in PostGIS if


a) you have a lot of data b) you want to run queries (like you do) and c) if lots of people are going to use your app


If you are going to run queries I would look at Web Processing Services (WPS) these are still "new" but these are supported in GeoServer.



If however you have a small amount of data and can pre-run the queries and then just use OpenLayers to display then you should stick to using GeoJSON from a flat file or even look at TopoJSON which is gaining alot of popularity with D3 javascript library - see here http://bost.ocks.org/mike/map/ Mike Bostock's tutorial is great.


Hope that helps


No comments:

Post a Comment

arcpy - Changing output name when exporting data driven pages to JPG?

Is there a way to save the output JPG, changing the output file name to the page name, instead of page number? I mean changing the script fo...