[Users] GeoJSON vs WKT
Knut Staring
knutst at gmail.com
Tue May 25 16:16:10 CEST 2010
Hello Andreas,
Thanks for pointing out the bottleneck will likely be elsewhere. You
are certainly right about the limit on number of features - though
there are enormous differences between javascript engines now; "IE8
was more than 12 times slower than Opera 10.53" [1].
Since it's usually hard to dictate browser, I'll explore
WMSGetFeatureInfo and GetFeature.
Cheers,
Knut
[1] http://www.computerworld.com/s/article/9176320/New_Chrome_browser_fastest_Google_beta_yet
On Tue, May 25, 2010 at 10:43 AM, Andreas Hocevar <ahocevar at opengeo.org> wrote:
> Hi Knut,
>
> I don't think that anybody has done benchmarking on the various formats that GeoExt supports through OpenLayers.
>
> Be warned, regardless of the format you choose, that building the geometries and rendering features on a vector layer is a time consuming task. Web applications that process more than a few hundred features are known to feel slow, and switching to a different format won't make much of a difference.
>
> Alternatives to check for a large number of features include rendering features on the server (e.g. using WMS) and using WMS GetFeatureInfo or WFS GetFeature to get information for a small number of features. With the available WMSGetFeatureInfo and GetFeature controls of OpenLayers, you can easily build interactive applications without having all the features on the client.
>
> Regards,
> Andreas.
>
> On May 24, 2010, at 15:48 , Knut Staring wrote:
>
>> Dear list,
>>
>> I was wondering if there are any criteria for choosing between GeoJSON
>> or WKT when feeding GeoExt from the database? I care about both
>> transmission size (since many users will have low bandwidth) and
>> processing (users may have low spec hardware, and even the latest
>> Chrome and Opera struggle with too large geometries).
>>
>> WKT looks more compact, in that there are much fewer square brackets.
>> But since browsers speak javascript, it may be heavier to process?
>>
>> I've written some PHP to generate GeoJSON, like this:
>> http://109.74.202.200/ke/geojson.php, which feeds into
>> http://109.74.202.200/ke/feature-grid.html in the following way:
>>
>> protocol: new OpenLayers.Protocol.HTTP({
>> url: "geojson.php",
>> format: new OpenLayers.Format.GeoJSON()
>> })
>>
>> However, looking at http://waterandhealth.eu/, I notice that WKT is
>> used rather than GeoJSON:
>> http://waterandhealth.eu/php/geometries.php
>>
>> Here is a snippet from the javascript:
>>
>> Atlas.data.store.GeometryStore = Ext.extend(Ext.data.JsonStore, {
>> features: [],
>> countryRoot: null,
>> constructor: function (a) {
>> Ext.apply(this, a);
>> Atlas.data.store.GeometryStore.superclass.constructor.call(this,
>> Ext.apply({
>> proxy: new Ext.data.HttpProxy({
>> url: "php/geometries.php",
>> method: "POST"
>> }),
>> root: "geometries",
>> fields: ["fid", "geom", "country_id", "country_name"]
>> }, a));
>> this.addEvents("featureLoad");
>> this.on("load", function () {
>> this.data.each(function (e, b, f) {
>> var d = OpenLayers.Geometry.fromWKT(e.get("geom"));
>> var c = new OpenLayers.Feature.Vector(d, {
>> id: e.get("fid"),
>> countryId: e.get("country_id"),
>> countryName: e.get("country_name"),
>> value: -1
>> });
>> this.features.push(c)
>> }, this);
>> this.fireEvent("featureLoad")
>> })
>> },
>> getFeatures: function () {
>> var c = this.features;
>> var d = [];
>> for (var b = 0; b < c.length; b++) {
>> var a = c[b].clone();
>> d.push(a)
>> }
>> return d
>> }
>> });
>>
>> Grateful for any guidance.
>>
>> Cheers,
>> Knut
>> _______________________________________________
>> Users mailing list
>> Users at geoext.org
>> http://www.geoext.org/cgi-bin/mailman/listinfo/users
>
>
>
> --
> Andreas Hocevar
> OpenGeo - http://opengeo.org/
> Expert service straight from the developers.
>
>
--
Cheers,
Knut Staring
More information about the Users
mailing list