mapserv segfaults trying to get thequery results of a native oracle spati

Fernando Simon fsimon at UNIVALI.BR
Mon May 2 11:34:36 EDT 2005


Hi Nicol,
    Yes, is mandatory to use numeric type for UNIQUE column. I use this
way because mapserver use the internal shapeindex as a long type.
     The character field can be the problem in your case.
     Thanks.

------------------------------------------------------------------------
Fernando Simon
Mapserver and Oracle Spatial developer
G10 - Laboratorio de Computacao Aplicada - Brazil
http://g10.cttmar.univali.br - UNIVALI/CTTMAR
------------------------------------------------------------------------

Nicol Hermann wrote:

>Hi Fernando,
>is it mandatory to use numeric field types as UNIQUE column in the data
>statement? At the moment i use a character field. I assume this is the
>reason for the wrong shapeindex value, right?
>Thanks
>Nicol
>
>
>Am Montag, den 02.05.2005, 11:35 -0300 schrieb Fernando Simon:
>
>
>>Hi Nicol,
>>    You can change the data parameter for any sql that return a geometry
>>type.  In your case you can add "WHERE" inside the data stmt, like:
>>DATA "GEOMETRIE from (SELECT ID, INFOTEXT, BESCHRIFT, GEOMETRIE FROM
>>FLURST WHERE ID > 0) USING UNIQUE ID SRID 82027"
>>    Here I don't use the "select *", but you can use without problem.
>>    About the example, you can define your sql with where's, join's,
>>functions and spatial functions between the "(" and ")". The
>>maporaclespatial.c don't change this sql, it's mount the internal sql
>>using your sql as base.
>>    Just as hint, the column that you define as UNIQUE, ID in your case,
>>must be a numeric type. Only numbers, and it's need to be unique
>>identifiers for your table. More one hint, you can start your counter
>>"j" with 1 and test the if occur the same problem.
>>    Thanks.
>>
>>------------------------------------------------------------------------
>>Fernando Simon
>>Mapserver and Oracle Spatial developer
>>G10 - Laboratorio de Computacao Aplicada - Brazil
>>http://g10.cttmar.univali.br - UNIVALI/CTTMAR
>>------------------------------------------------------------------------
>>
>>
>>Nicol Hermann wrote:
>>
>>
>>
>>>Hi Fernando,
>>>
>>>thank you for your answer!
>>>I found a problem in my code.
>>>I opened the layer before i send the query. I changed this to:
>>>
>>>$status = $Layer -> queryByPoint($geometrie, MS_MULTIPLE, 100);
>>>$Layer->open();
>>>for($j = 0;$j < $Layer->getNumResults(); $j++) {
>>>  $oRes = $Layer->getResult($j);
>>>  $shpobj = $Layer->getShape($oRes->tileindex,$oRes->shapeindex);
>>>  $shpobj->free();
>>>}
>>>$Layer->close();
>>>
>>>Now i get a mapserver error message:
>>>
>>>Fatal error: [MapServer Error]: msOracleSpatialLayerGetShape(): Error:
>>>ORA-01722: Ungultige Zahl . Query statement: SELECT ID, INFOTEXT,
>>>BESCHRIFT, GEOMETRIE FROM (SELECT * FROM FLURST) WHERE ID = 0 .Check
>>>your data statement.
>>>
>>>Here is my data statement:
>>>DATA "GEOMETRIE from (SELECT * FROM FLURST) USING UNIQUE ID SRID 82027"
>>>
>>>The value of the variable '$oRes' are:
>>>
>>>stdClass Object
>>>(
>>>   [shapeindex] => 0
>>>   [tileindex] => -1
>>>   [classindex] => 0
>>>)
>>>
>>>How do i have to change the data statement to get a valid shapeindex?
>>>
>>>I'am not sure that the solution found for bug #1244 solves my problem
>>>with the "--enable-point-z" flag. I use the latest cvs version which
>>>should contain the fix, right?
>>>
>>>Many thanks for your help
>>>Nicol
>>>
>>>
>>>
>>>
>>>
>>>
>>
>>
>
>
>



More information about the mapserver-users mailing list