[Cartoweb-users] Re: problem with edit plugin and SRID

Bart van den Eijnden (OSGIS) bartvde at xs4all.nl
Fri Jul 21 08:34:39 EDT 2006


Hi Pierre,

yes I tested it.

Best regards,
Bart

Pierre GIRAUD wrote:

> Did you test it ?
> If so, I can apply the patch in the CVS version right now.
>
> Thanks.
>
> Bart van den Eijnden (OSGIS) wrote:
>
>> Hi Pierre,
>>
>> thanks for the pointer to the bugzilla entry.
>>
>> There is yet another of these errors (also in CVS) in the function 
>> that selects with a box:
>>
>>                case 'Rectangle':
>>                    $sql = sprintf('SELECT *, astext(%s) as %s FROM 
>> %s.%s ' .
>>                                   'WHERE intersects (%s, ' .
>>                                   "'BOX3D(%s %s, %s %s)'::box3d)",
>>                                   $this->geomColumn,
>>                                   $this->geomColumn,
>>                                   $this->editSchema,
>>                                   $this->editTable,
>>                                   $this->geomColumn,
>>                                   $shape->minx,
>>                                   $shape->miny,
>>                                   $shape->maxx,
>>                                   $shape->maxy
>>                                   );
>>
>> should be:
>>                case 'Rectangle':
>>                    $sql = sprintf('SELECT *, astext(%s) as %s FROM 
>> %s.%s ' .
>>                                   'WHERE intersects (%s, ' .
>>                                   "SetSRID('BOX3D(%s %s, %s 
>> %s)'::box3d, %s))",
>>                                   $this->geomColumn,
>>                                   $this->geomColumn,
>>                                   $this->editSchema,
>>                                   $this->editTable,
>>                                   $this->geomColumn,
>>                                   $shape->minx,
>>                                   $shape->miny,
>>                                   $shape->maxx,
>>                                   $shape->maxy,
>>                                   $this->getSrid()
>>                                   );
>>
>> Best regards,
>> Bart
>>
>> Pierre GIRAUD wrote:
>>
>>> You're right.
>>> This is an already fixed bug (CVS version).
>>>
>>> http://bugzilla.maptools.org/show_bug.cgi?id=1482
>>>
>>> Regards
>>>
>>> Pierre
>>>
>>> Bart van den Eijnden (OSGIS) wrote:
>>>
>>>> I fixed it by changing the following in the function 
>>>> selectFeaturesByShape of ServerEdit.php
>>>>
>>>>                    $sql = sprintf('SELECT *, astext(%s) as %s FROM 
>>>> %s.%s ' .
>>>>                                   "WHERE %s && setSRID('%s'::box3d, 
>>>> %s) ".
>>>>                                   "AND distance (%s, 
>>>> GeometryFromText( '".
>>>>                                   "POINT(%s %s)', %s ) ) < %s",
>>>>                                   $this->geomColumn,
>>>>                                   $this->geomColumn,
>>>>                                   $this->editSchema,
>>>>                                   $this->editTable,
>>>>                                   $this->geomColumn,
>>>>                                   $bbox3D,
>>>>                                   $this->getSrid(),
>>>>                                   $this->geomColumn,
>>>>                                   $shape->x,
>>>>                                   $shape->y,
>>>>                                   $this->getSrid(),
>>>>                                   $toleranceGeo
>>>>                                   );
>>>>
>>>> Best regards,
>>>> Bart
>>>>
>>>> Bart van den Eijnden (OSGIS) wrote:
>>>>
>>>>> Hi list,
>>>>>
>>>>> when trying to select a polygon in the edit demo in one of my 
>>>>> PostGIS (version 1.1.2) layers, Cartoweb generates the following 
>>>>> query:
>>>>>
>>>>> message:   Unable to select feature(s) in database Message: DB 
>>>>> Error: unknown error  Userinfo: SELECT *, astext(geometrie) as 
>>>>> geometrie FROM bestemmingsplannen.bouwvlakken WHERE geometrie && 
>>>>> 'BOX3D(51605.3112 365837.217533, 51606.1447556 
>>>>> 365838.051089)'::box3d AND distance (geometrie, GeometryFromText( 
>>>>> 'POINT(51605.727977809336 365837.6343111111)', -1 ) ) < 
>>>>> 0.833555555556 [nativecode=ERROR:  Operation on two geometries 
>>>>> with different SRIDs]
>>>>>
>>>>> My PostGIS table has SRID 90112 for the Dutch national system. 
>>>>> Adding features works fine by the way.
>>>>>
>>>>> There are 2 errors in this query:
>>>>>
>>>>> 1) the Box3D is missing an setSRID call, I believe it somehow also 
>>>>> relates to this:
>>>>>
>>>>> http://www.postgis.org/pipermail/postgis-users/2006-May/012049.html
>>>>>
>>>>> so it used to be allowed by PostGIS, but not anymore (at least 
>>>>> that's my interpretation).
>>>>>
>>>>> 2) the GeomFromText needs to get SRID 90112 instead of -1
>>>>>
>>>>> The following query does work fine:
>>>>>
>>>>> SELECT *, astext(geometrie) as geometrie FROM 
>>>>> bestemmingsplannen.bouwvlakken WHERE geometrie && 
>>>>> setSRID('BOX3D(51605.3112 365837.217533, 51606.1447556 
>>>>> 365838.051089)'::box3d, 28992) AND distance (geometrie, 
>>>>> GeometryFromText( 'POINT(51605.727977809336 365837.6343111111)', 
>>>>> 28992 ) ) < 0.833555555556
>>>>>
>>>>> Are these bugs, or am I missing something?
>>>>>
>>>>> For reference, this is my MAP file LAYER:
>>>>>
>>>>> LAYER
>>>>>   NAME EDITBOUWVLAK
>>>>>   STATUS ON
>>>>>   TYPE POLYGON
>>>>>   CONNECTIONTYPE POSTGIS
>>>>>   CONNECTION 'dbname=terneuzen user=terneuzen_www 
>>>>> password=trnzn_www_2006 host=localhost'
>>>>>   DATA 'geometrie from bestemmingsplannen.bouwvlakken USING UNIQUE 
>>>>> bouwvlak_id SRID 90112'
>>>>>   TEMPLATE 'ttt'
>>>>>   TRANSPARENCY 50
>>>>>   PROJECTION
>>>>>     "init=epsg:28992"
>>>>>   END
>>>>>   LABELITEM "bouwvlak_id"
>>>>>   CLASS
>>>>>     NAME "class"
>>>>>     STYLE
>>>>>       COLOR 50 50 255
>>>>>       OUTLINECOLOR 255 50 50
>>>>>     END
>>>>>     LABEL
>>>>>       TYPE TRUETYPE
>>>>>       FONT "Vera"
>>>>>       SIZE 7
>>>>>       COLOR 0 0 0
>>>>>       POSITION cc
>>>>>       BACKGROUNDCOLOR 245 235 235
>>>>>       BACKGROUNDSHADOWCOLOR 55 55 55
>>>>>       BACKGROUNDSHADOWSIZE 1 1
>>>>>     END
>>>>>   END
>>>>>   LABELMAXSCALE 50000
>>>>>   METADATA
>>>>>     'id_attribute_string' 'bouwvlak_id' # query
>>>>>     'query_returned_attributes' 'parc_id name culture surf parc_type'
>>>>>     'edit_table' 'bestemmingsplannen.bouwvlakken' # PostGIS table
>>>>>     'edit_geometry_column' 'geometrie' # PostGIS geometry column
>>>>>     'edit_geometry_type' 'polygon' # PostGIS geometry type
>>>>>     'edit_srid' '28992'
>>>>>     'edit_attributes' 'intekenaar|string' # list of the editable 
>>>>> fields
>>>>>     'edit_filter' '' # mapserver filter
>>>>>   END
>>>>> END
>>>>>
>>>>> Thanks in advance.
>>>>>
>>>>> Best regards,
>>>>> Bart
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>
>


-- 
Bart van den Eijnden
OSGIS, Open Source GIS
http://www.osgis.nl



More information about the Cartoweb-users mailing list