From charlesreid1

No edit summary
Line 1: Line 1:
My geodroplet adventure:
* Part 1 - [[Geodroplet]]
* Part 2 - [[Geoserver]]
* Part 3 - this page
This page covers my attempt to get EIA oil and gas lease data into Geoserver.
This page covers my attempt to get EIA oil and gas lease data into Geoserver.



Revision as of 14:32, 2 February 2015

My geodroplet adventure:

This page covers my attempt to get EIA oil and gas lease data into Geoserver.

The data source: https://github.com/talllguy/EIA-Oil-Gas-Maps

Prj2EPSG tool: http://prj2epsg.org/

Put the Data on the Server

Copy the data to a place where Geoserver can see it:

cd EIA-Oil-Gas-Maps
sudo cp -r shapefiles /var/lib/tomcat7/webapps/geoserver/data/data/oilgas1
sudo chown -R tomcat7:tomcat7 /var/lib/tomcat7/webapp/geoserver/data/data/oilgas1

Make Workspace

The first step is to create a workspace, which I'll call "oilgas".

Geoserver > Data > Workspaces, and create new workspace

Make Data Store

The next step is to create a data store, which is a directory of shape files. I point to the data in the oilgas1 directory.

Dealing with Projection Issues

I had some issues with the projection not being found. I ended up opening the .prj projection file (in the same directory as the shapefile), and using http://prj2epsg.org/ to find the corresponding EPSG code. Once I found the code (a four- or five-digit number), I was able to search for it, and find it. This allowed Geoserver to correctly interpret the shapefile data.

Make A Map

Next step is to make a map with that data. We need to know the name of our map. In the case above, I added a shapefile called US_ShalePlays_EIA_May2011.shp, into the oilgas workspace, so my map is at oilgas:US_ShalePlays_EIA_May2011.

I can point to this map when I give Leaflet.js my map data URL. Here is the Leaflet script to map this data:

var map = L.map('map').setView([35.0, -100.0], 4);

L.tileLayer('http://api.tiles.mapbox.com/v4/mapbox.streets/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoiY2hhcmxlc3JlaWQxIiwiYSI6ImpreUJGM3MifQ.w
    attribution: 'Map data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a>',
    maxZoom: 18
}).addTo(map);

var owsrootUrl = 'http://104.236.163.66:8080/geoserver/ows';

var defaultParameters = {
    service : 'WFS',
    version : '1.0',
    request : 'GetFeature',
    typeName : 'US_ShalePlays_EIA_May2011',
    maxFeatures : '200',
    outputFormat : 'text/javascript',
    format_options : 'callback:getJson',
    SrsName : 'EPSG:4269'
};

var parameters = L.Util.extend(defaultParameters);
var URL = owsrootUrl + L.Util.getParamString(parameters);

Now use the data to construct a map:

//ajax to get map features
$.ajax({
    type: "POST",
    url: URL,
    dataType: 'jsonp',
    jsonpCallback : 'getJson',

    //upon success extraction of data
    success: function (data) {

        // the data.geometry field contains coordinate/location data.
        //
        // now use this page on Leaflet+GeoJSON:
        // http://leafletjs.com/examples/geojson.html

        //create a new geojson layer
        var geojson = new L.geoJson(data, {

                // apply a style
                style: {"color":"#ff7800","weight":2}
        }).addTo(map);

        //var marker = L.marker([40.7543, -73.9858]).addTo(map);
    }
});

Finished Product

You should see the map below when you navigate to the page with the embedded map:

GeoserverOilGas.png