[OpenLayers-Users] parsing a GML file into different layers

Alex Brandsen alex.brandsen at gmail.com
Wed Jun 30 04:39:35 EDT 2010


Thank you so much Arnd, that works perfectly!
Still need to tweak it a bit, but that shouldn't be too difficult.

Thanks again,

Alex.

On Tue, Jun 29, 2010 at 9:35 PM, Arnd Wippermann <arnd.wippermann at web.de>wrote:

> Hi Alex,
>
> that's how I would do it. Use an Ajax request to get the GML-file and then
> parse it and add every feature to an new vector layer.
>
> If your GML-file residents on the same server (use relative path to the
> gml), then you don't need a proxy script.
>
> If have tested the below code locally with the example
> "spherical-mercator.html".
>
> var formats = {
>    wkt:     new OpenLayers.Format.WKT(),
>    geojson: new OpenLayers.Format.GeoJSON(),
>    georss:  new OpenLayers.Format.GeoRSS(),
>    gml:     new OpenLayers.Format.GML(),
>    kml:     new OpenLayers.Format.KML()
> };
>
> function getGML()
> {
>    theUrl = "/OLClient/some.gml";
>
>    var myAjax = new OpenLayers.Ajax.Request(
>        theUrl,
>        {
>                method: 'get',
>                onComplete: showResponse,
>                onFailure: showResponseFailure
>        });
> }
>
> var arr = [];
>
> function showResponse(response)
> {
>    var theParser = formats["gml"];
>    theParser.internalProjection = null;
>    theParser.externalProjection = null;
>    theParser.extractStyles      = false;
>    theParser.extractAttributes  = true;
>
>    var features = theParser.read(response.responseText);
>
>     if(features)
>    {
>        if(features.constructor != Array)
>            features = [features];
>
>         //iterate the features and put them on a vector layer
>         for(var i=0;i<features.length;i++)
>        {
>             //get the feature type
>            var ftType =
> features[i].geometry.CLASS_NAME.replace(/OpenLayers.Geometry./,"");
>            //count the feature of a type
>            arr[ftType] = arr[ftType] + 1;
>
>             var ftLyr = new OpenLayers.Layer.Vector(ftType + " " +
> arr[ftType]);
>            map.addLayer(ftLyr);
>            ftLyr.addFeatures(features[i]);
>        }
>
>        //to zoom to the features
>        var bounds = features[0].geometry.getBounds().clone();
>        for(var i=1;i<features.length;i++)
>            bounds.extend(features[i].geometry.getBounds());
>        map.zoomToExtent(bounds,false);
>    }
>    else
>        alert('Bad input ' + type);
> }
>
> function showResponseFailure(response)
> {
>    alert(response);
> }
>
> getGML();
>
> Arnd
> ________________________________
>
> Von: Alex Brandsen [mailto:alex.brandsen at gmail.com]
> Gesendet: Dienstag, 29. Juni 2010 12:23
> An: Arnd Wippermann
> Cc: users at openlayers.org
> Betreff: Re: [OpenLayers-Users] parsing a GML file into different layers
>
>
> Hi Arnd,
>
> thanks for your reply, this seems like it should work. I've been trying it
> out, but can't get it to work.. What should go in the brackets after 'GML',
> and where does 'response' come from? Sorry if these are really basic
> questions, but I don't have much experience in JS or OL...
>
> Thanks again,
>
> Alex.
>
>
> On Sun, Jun 27, 2010 at 2:44 PM, Arnd Wippermann <arnd.wippermann at web.de>
> wrote:
>
>
>        Hi,
>
>        something like this should work:
>
>        var features = new OpenLayers.Format.GML().read(response);
>
>        if(features)
>        {
>            if(features.constructor != Array)
>                features = [features];
>
>            for(var i=0;i<features.length;i++)
>            {
>                var ftLyr = new OpenLayers.Layer.Vector("Feature " + i);
>                addLayer(ftLyr);
>                ftLyr.addFeatures(features[i]);
>            }
>        }
>
>        Arnd
>
> ________________________________
>
>        Von: users-bounces at openlayers.org
> [mailto:users-bounces at openlayers.org] Im Auftrag von Alex Brandsen
>        Gesendet: Sonntag, 27. Juni 2010 14:43
>        An: Eric Lemoine
>        Cc: users at openlayers.org
>        Betreff: Re: [OpenLayers-Users] parsing a GML file into different
> layers
>
>
>        Hi Eric,
>
>        thanks for your reply. I probably need to use OpenLayers.
> Format.GML.read() , but how do I then split the array it returns into
> different layers?
>
>        Thanks,
>
>        Alex.
>
>
>        On Sat, Jun 26, 2010 at 7:12 AM, Eric Lemoine
> <eric.lemoine at camptocamp.com> wrote:
>
>
>                On Friday, June 25, 2010, Alex Brandsen
> <alex.brandsen at gmail.com> wrote:
>                > Hi all,
>                >
>                > I'm building a map of a medieval wallpainting, and the
> graffiti inscribed in this wall, which can be found on
> www.thomasav.com/DurhamGraffiti/ (still quite buggy though!).
>                > I was wondering if there is a way for OpenLayers to
> dynamically turn features from a single GML file into seperate layers, by
> providing an array of feature id's. I've been looking through the
> documentation and been googling around, but I can't seem to find anything
> useful. Perhaps "OpenLayers. Filter. FeatureId" could do something like
> this, but the documentation on this is quite sparse..
>                >
>                > Ofcourse, I could just write a php script that would
> pre-parse the gml into seperate, temporary gml files, but I think using
> OpenLayers itself would be preferable.
>                >
>                > If anyone has any ideas, I would be very grateful!
>
>
>
>                Hi
>
>                The protocol or format that you use will give you an array
> of
>                features. You are then free to dispatch the features to
> separate
>                vector layers, for example based on their ids.
>
>                I hope it helps,
>
>
>                --
>                Eric Lemoine
>
>                Camptocamp France SAS
>                Savoie Technolac, BP 352
>                73377 Le Bourget du Lac, Cedex
>
>                Tel : 00 33 4 79 44 44 96
>                Mail : eric.lemoine at camptocamp.com
>                http://www.camptocamp.com
>
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/openlayers-users/attachments/20100630/6d9128da/attachment.html


More information about the Users mailing list