[OpenLayers-Users] Re: How to Optimize the Display of Large KML files in OpenLayers?

Greg Allensworth gregor at greeninfo.org
Wed Nov 23 15:13:28 EST 2011


> To get the same performance, you need some server-side service to remotely
> process and render your KML as, say, a WMS.  I think you may be able to do
> that with Mapserver?

MapServer does support KML as a data source, if you compiled with GDAL 
(which you likely did). It should be very feasible to do this, as 
follows. (using PHP here)

* Make a program which would accept URLs like this:
    loadkml.php?http://path.to.com/my/stuff.kml

* Have it fetch and save to disk as you imply, simply using 
file_get_contents() or simply copy(). Probably some sanity checks would 
be smart here, e.g. check that substr(strtolower(filename),-2)=='.kml' 
so you can't be tricked into downloading and hosting arbitrary content.

* Run ogrinfo on the KML to find the name and geometry of layer 0. Or 
use SimpleXML and read the KML to find this info; whichever is easier 
for you.

* Generate a minimal mapfile: LAYER, DATA, TYPE, and a CLASS depending 
on the geom type.

* Tell the browser the new WMS service you just created: 
/cgi-bin/mapserv?map=/temp/kmlmapfiles/123456.map

* Have a callback in the JavaScript which creates a Layer.WMS and adds 
it to the map.

A significant caveat: MapServer doesn't parse styles from KML, at all, 
it ignores them and sees only vector features (and only the Name and 
Description fields at that). So you may need additional steps: load the 
KML using SimpleXML, iterate over styleUrl entries and then over 
Placemarks, and generate a custom MapServer CLASS for each Placemark 
reflecting the styles in the KML.

-- 
Greg Allensworth, Web GIS Developer
BS  A+  Network+  Security+  Linux+  Server+
GreenInfo Network - Information and Mapping in the Public Interest
564 Market Street, Suite 510  San Francisco CA 94104
PH: 415-979-0343 x302  FX: 415-979-0371    email: gregor at greeninfo.org
Web: www.GreenInfo.org     www.MapsPortal.org

Subscribe to MapLines, our e-newsletter, at www.GreenInfo.org


More information about the Users mailing list