Web GIS with OpenLayers and PostgreSQL and PostGIS

Web GIS with OpenLayers and PostgreSQL and PostGIS


Job Description

My company is looking to create a web GIS application that will allow users to conduct basic environmental analyses of a combination of map layers that will be drawn in or uploaded by users, as well as "common" layers hosted by us.

This will be built in Open Layers, PostgreSQL, and PostGIS, using Javascript

We'd like to do this in stages so that we have a better idea of how to properly execute our vision. Along the way, we need to learn the basics of the skills above. Initially, this would run internally on one computer for testing and learning.

Specifically, we seek to construct the application in stages, with delivery and payment of each stage when ready for feedback and adjustment and then permission to proceed with the next stage:

1) A "starter" web application that consists of:
a) a web page with an OpenLayers map and basic map tools (zoom in, zoom out, pan, zoom previous)
b) have Google Maps, Bing Maps, and Open StreetMap (etc.) available as base map options for users to toggle between.
c) functionality to draw multiple points, lines, and polygons
d) and capture their appropriate measurements (lat/lng for points, length in meters and US feet for lines, and area in square meters and sq US feet for polygons)
e) and display of these measurements via pop-ups as each individual feature is completed and with running totals for each of the three types.

2) Functionality to add other layers:
a) guidance on how to add our own hosted layers as "base map" layers - both vector (Shapefiles) and raster - with multiple attributes
b) functionality to upload and properly display on the OpenLayers map an ESRI Shapefile point, line, or polygon with 1 user-selected attribute
(Initially, we will keep everything in geographic/latitude-longitude projection to match Google Maps)

3) Functionality to convert all of these layers (user drawn, user upload Shapefiles, our hosted Shapefiles/rasters) into a PostgreSQL, PostGIS-enabled database and guidance on setting up the PostgreSQL/PostGIS database on our end.
a) point and line features would be buffered per user input distance.

4) Functionality to sample these layers on a 10x10 meter grid and storing their attributes at each sample location/grid cell/pixel in the PostgreSQL database.

5) Functionality to query the 10x10 sampled data:
a) to determine combinations of attributes from separate layers present at each sample point.
b) display the results of the queries, as 10x10 grid pixels on the Open Layers map.
For example: we host a US Census polygon layer with multiple attributes, a user draws in a boundary polygon for a study area, and also uploads a watershed polygon layer. After the 10x10 gridded sampling, we should be able to determine those sample points/pixels which meet a specific Census block attribute (say "household income < $40,000"), which watershed (say "Ohio Watershed"), and whether the points are inside the user's study area. The sample points/pixels that meet the query criteria would then be displayed on the OpenLayers map colored red.

As you can see, this project - with successful early stages - will continue to grow. The 5 stages above are for "proof-of-concept"; if successful, there will be plenty of additional work. Active contribution and inclusion on the candidate's part will grow and be expected.

Because we are learning OpenLayers, PostgreSQL, and PostGIS ourselves, and have limited Javascript abilities, FULL COMMENTING in English of the code is required.

All code must become our property for possible future use in further development.

Skills: english