[OpenLayers-Dev] [Dev] Re: Vectors in OpenLayers?

Cameron Shorter cameron.shorter at gmail.com
Fri Oct 20 00:58:45 EDT 2006


I'm wondering whether we will need to create a Geometry->GML serialiser.
In an application which uses GML, the rendering logic will go:

GML -> Geometry Classes -> Vector Rendering HTML

Ie, the client will already have the data in GML format.

If the user edits features, then we can have the tools update the data 
source (GML in this case) which in turn will propagate the update though 
to the Geometry and Renderer.

The other reason you might want to serialise is so that you can convert 
from one format to another, eg WKT->Geometry->GML or similar. However I 
suggest we keep vector transformation on the server, probably as a web 
service.

Paul Spencer wrote:
> For you maybe ;)  GML would be another good output choice I guess
> 
> Paul
> 
> On 19-Oct-06, at 3:44 AM, Bart van den Eijnden (OSGIS) wrote:
> 
> 
>>Will there also be an option to serialize the objects as GML?
>>
>>Since interaction will mostly be against OGC Web Services.
>>
>>Best regards,
>>Bart
>>
>>--
>>Bart van den Eijnden
>>OSGIS, Open Source GIS
>>http://www.osgis.nl
>>
>>
>>--------- Oorspronkelijk bericht --------
>>Van: Paul Spencer <pspencer at dmsolutions.ca>
>>Naar: Pierre GIRAUD <bluecarto at gmail.com>
>>Cc: dev at openlayers.org
>>Onderwerp: Re: [OpenLayers-Dev] [Dev]  Re: Vectors in OpenLayers?
>>Datum: 19/10/06 00:09
>>
>>
>>>Hi Pierre,
>>>
>>>I haven't looked at the code but I think that this will be needed in
>>>some sort of factory object that can create Geometry (and associated
>>>Shape) objects from WKT.  We are a bit early for implementation
>>>details right now (despite the fact that I've already done a bunch of
>>>implementation), but when the design is finalized, we'll need this
>>>piece.
>>>
>>>This reminds me that Geometry objects need to be able to serialize
>>>themselves as WKT.
>>>
>>>Cheers
>>>
>>>Paul
>>>
>>>On 13-Oct-06, at 12:46 PM, Pierre GIRAUD wrote:
>>>
>>>&gt; I wanna propose you some peace of code for this.
>>>&gt; Hope you'll be able to have a quick look and check if I'm the  
>>>good
>>>&gt; way.
>>>&gt;
>>>&gt; I tried to follow the &quot;factory&quot; pattern, but I'm  
>>>not sure I
>>>&gt; implemented it right considering the rest of the architecture.
>>>&gt;
>>>&gt; Regards and nice week-end
>>>&gt;
>>>&gt; Pierre
>>>&gt;
>>>&gt; ps : this code might be useable in the current vector sandbox
>>>&gt;
>>>&gt; On 10/13/06, Pierre GIRAUD &lt;bluecarto at gmail.com&gt; wrote:
>>>&gt;&gt; I don't know if this is a needed functionnality, but it can
>>
>>probably
>>
>>>&gt;&gt; help. I was trying to think about and implement a way to  
>>>add a
>>>&gt;&gt; feature
>>>&gt;&gt; by its WKT string writing.
>>>&gt;&gt;
>>>&gt;&gt; Something like :
>>>&gt;&gt;
>>>&gt;&gt; OpenLayers.Vector.WKT
>>>&gt;&gt;
>>>&gt;&gt; p4 = new OpenLayers.Vector.WKT('POINT(-40 30)');
>>>&gt;&gt;
>>>&gt;&gt; Regards
>>>&gt;&gt;
>>>&gt;&gt; Pierre
>>>&gt;&gt;
>>>&gt;&gt; On 10/13/06, Paul Spencer &lt;pspencer at dmsolutions.ca&gt;  
>>>wrote:
>>>&gt;&gt; &gt; Thanks Chris :)
>>>&gt;&gt; &gt;
>>>&gt;&gt; &gt; Performance really sucks if you add a lot of  
>>>features.  I
>>
>>wrote a
>>
>>>&gt;&gt; &gt; quick loop to add a 1 degree box every 10 degrees and
>>
>>brought my
>>
>>>&gt;&gt; &gt; firefox to a halt.  Profiling reveals a number of
>>
>>problematic
>>
>>>&gt;&gt; areas,
>>>&gt;&gt; &gt; the biggest of which is getPx (of course).
>>>&gt;&gt; &gt;
>>>&gt;&gt; &gt; I've done some optimization that improves  
>>>performance in
>>
>>this case:
>>
>>>&gt;&gt; &gt;
>>>&gt;&gt; &gt; * remove the call to Pixel.add(x,y) and directly  
>>>modify the
>>
>>pixel
>>
>>>&gt;&gt; &gt; position - this was a big savings ...
>>>&gt;&gt; &gt;
>>>&gt;&gt; &gt; * cached px location in the Point object based on  
>>>the bounds
>>
>>of the
>>
>>>&gt;&gt; &gt; containing vectorLayer so getPx is only called when the
>>
>>bounds have
>>
>>>&gt;&gt; &gt; actually changed.
>>>&gt;&gt; &gt;
>>>&gt;&gt; &gt; attached is a patch against the sandbox to  
>>>incorporate these
>>
>>>&gt;&gt; changes.
>>>&gt;&gt; &gt;
>>>&gt;&gt; &gt; Next steps for me are:
>>>&gt;&gt; &gt;
>>>&gt;&gt; &gt; * fix rendering in IE and Safari (that was the whole  
>>>point
>>
>>of using
>>
>>>&gt;&gt; &gt; excanvas)
>>>&gt;&gt; &gt;
>>>&gt;&gt; &gt; * further optimizations, including:
>>>&gt;&gt; &gt;
>>>&gt;&gt; &gt;    o try caching the bounds of each vector and test for
>>>&gt;&gt; intersection
>>>&gt;&gt; &gt; with layer bounds before rendering
>>>&gt;&gt; &gt;
>>>&gt;&gt; &gt;    o tighten inner loops and remove deep call chains
>>
>>(possibly
>>
>>>&gt;&gt; &gt; putting some of the pixel conversion stuff right into
>>
>>convertToPx)
>>
>>>&gt;&gt; &gt;
>>>&gt;&gt; &gt;   o anything else you can think of
>>>&gt;&gt; &gt;
>>>&gt;&gt; &gt; * convenience functions for constructing polygons  
>>>and lines
>>
>>from
>>
>>>&gt;&gt; &gt; points without having to construct intermediate objects
>>>&gt;&gt; &gt;
>>>&gt;&gt; &gt; Other things that need to be done at some point, but  
>>>not
>>>&gt;&gt; necessarily
>>>&gt;&gt; &gt; for 2.3:
>>>&gt;&gt; &gt;
>>>&gt;&gt; &gt; * refactor the code (what, already?) so that the Vector
>>>&gt;&gt; architecture
>>>&gt;&gt; &gt; can support multiple rendering types (Canvas, SVG, VML,
>>
>>possibly
>>
>>>&gt;&gt; &gt; others in the future) by introducing Layer.Vector  
>>>subclasses
>>
>>and a
>>
>>>&gt;&gt; &gt; new Rendering class that knows how to render into the
>>
>>sub-classed
>>
>>>&gt;&gt; &gt; layer types
>>>&gt;&gt; &gt;
>>>&gt;&gt; &gt; * refactor styling support to make it less specific to
>>
>>Canvas
>>
>>>&gt;&gt; &gt; rendering stuff
>>>&gt;&gt; &gt;
>>>&gt;&gt; &gt; * add some Controls for digitizing and possibly editing
>>>&gt;&gt; &gt;
>>>&gt;&gt; &gt; Cheers
>>>&gt;&gt; &gt;
>>>&gt;&gt; &gt; Paul
>>>&gt;&gt; &gt;
>>>&gt;&gt; &gt; On 12-Oct-06, at 7:55 PM, Christopher Schmidt wrote:
>>>&gt;&gt; &gt;
>>>&gt;&gt; &gt; &gt; On Thu, Oct 12, 2006 at 05:02:00PM -0400, Paul  
>>>Spencer
>>
>>wrote:
>>
>>>&gt;&gt; &gt; &gt;&gt; Schuyler, et al
>>>&gt;&gt; &gt; &gt;&gt;
>>>&gt;&gt; &gt; &gt;&gt; attached is a first cut at the vector  
>>>stuff.  It
>>
>>extracts
>>
>>>&gt;&gt; over an
>>>&gt;&gt; &gt; &gt;&gt; existing openlayers folder and contains  
>>>only the
>>
>>new files
>>
>>>&gt;&gt; I've added
>>>&gt;&gt; &gt; &gt;&gt; plus a change to OpenLayers.js to load the  
>>>extra
>>
>>files by
>>
>>>&gt;&gt; default
>>>&gt;&gt; &gt; &gt;&gt; (except for excanvas for some reason ;)).
>>>&gt;&gt; &gt; &gt;&gt;
>>>&gt;&gt; &gt; &gt;&gt; There is a vector.html in the examples folder.
>>>&gt;&gt; &gt; &gt;
>>>&gt;&gt; &gt; &gt; This code, with some improvements from Schuyler  
>>>and I,
>>
>>is now
>>
>>>&gt;&gt; in place
>>>&gt;&gt; &gt; &gt; in a sandbox in the OpenLayers SVN. You can  
>>>check out
>>
>>with:
>>
>>>&gt;&gt; &gt; &gt;
>>>&gt;&gt; &gt; &gt; svn co http://svn.openlayers.org/sandbox/sderle/ 
>>>vector/
>>>&gt;&gt; &gt; &gt;
>>>&gt;&gt; &gt; &gt; You can try it out at:
>>>&gt;&gt; &gt; &gt;
>>>&gt;&gt; &gt; &gt;
>>
>>http://openlayers.org/~crschmidt/vector/examples/vector.html
>>
>>>&gt;&gt; &gt; &gt;
>>>&gt;&gt; &gt; &gt; Click once to start drawing a line -- click  
>>>again to
>>
>>end it.
>>
>>>&gt;&gt; &gt; &gt;
>>>&gt;&gt; &gt; &gt; FF only at the moment.
>>>&gt;&gt; &gt; &gt;
>>>&gt;&gt; &gt; &gt; Cool stuff, Paul, thanks for getting the ball  
>>>rolling
>>
>>on this.
>>
>>>&gt;&gt; &gt; &gt; --
>>>&gt;&gt; &gt; &gt; Christopher Schmidt
>>>&gt;&gt; &gt; &gt; Web Developer
>>>&gt;&gt; &gt;
>>>&gt;&gt; &gt;
>>
>>+-----------------------------------------------------------------+
>>
>>>&gt;&gt; &gt; |Paul Spencer
>>
>>pspencer at dmsolutions.ca    |
>>
>>>&gt;&gt; &gt;
>>
>>+-----------------------------------------------------------------+
>>
>>>&gt;&gt; &gt; |Chief Technology Officer
>>
>>     |
>>
>>>&gt;&gt; &gt; |DM Solutions Group Inc
>>
>>http://www.dmsolutions.ca/ |
>>
>>>&gt;&gt; &gt;
>>
>>+-----------------------------------------------------------------+
>>
>>>&gt;&gt; &gt;
>>>&gt;&gt; &gt;
>>>&gt;&gt; &gt;
>>>&gt;&gt; &gt;
>>>&gt;&gt; &gt;
>>>&gt;&gt; &gt;
>>>&gt;&gt; &gt;
>>>&gt;&gt; &gt; _______________________________________________
>>>&gt;&gt; &gt; Dev mailing list
>>>&gt;&gt; &gt; Dev at openlayers.org
>>>&gt;&gt; &gt; http://openlayers.org/mailman/listinfo/dev
>>>&gt;&gt; &gt;
>>>&gt;&gt; &gt;
>>>&gt;&gt; &gt;
>>>&gt;&gt; &gt;
>>>&gt;&gt;
>>>&gt;&gt; &lt;wkt.html&gt;
>>>&gt;&gt; &lt;WKT.js&gt;
>>>&gt; _______________________________________________
>>>&gt; Dev mailing list
>>>&gt; Dev at openlayers.org
>>>&gt; http://openlayers.org/mailman/listinfo/dev
>>>
>>>+-----------------------------------------------------------------+
>>>|Paul Spencer                          pspencer at dmsolutions.ca    |
>>>+-----------------------------------------------------------------+
>>>|Chief Technology Officer                                         |
>>>|DM Solutions Group Inc                http://www.dmsolutions.ca/ |
>>>+-----------------------------------------------------------------+
>>>
>>>
>>>
>>>
>>>_______________________________________________
>>>Dev mailing list
>>>Dev at openlayers.org
>>>http://openlayers.org/mailman/listinfo/dev
>>>
>>>
>>
>>
>>
> 
> +-----------------------------------------------------------------+
> |Paul Spencer                          pspencer at dmsolutions.ca    |
> +-----------------------------------------------------------------+
> |Chief Technology Officer                                         |
> |DM Solutions Group Inc                http://www.dmsolutions.ca/ |
> +-----------------------------------------------------------------+
> 
> 
> 
> 
> _______________________________________________
> Dev mailing list
> Dev at openlayers.org
> http://openlayers.org/mailman/listinfo/dev
> 


-- 
Cameron Shorter
http://cameron.shorter.net




More information about the Dev mailing list