[postgis-users] Topological Exceptions
Chris Hermansen
chris.hermansen at timberline.ca
Thu Mar 13 18:49:34 PDT 2008
I can be so tiresome sometimes!
What I meant to ask was, when bad geometry is encountered and some
predicates are tempted to give up, what happens in the JDBC context - is
an exception thrown. Clearly if you move over to the returning nulls
then a Java null is the reasonable behaviour.
Sorry to be so unclear!
Martin Davis wrote:
> I would expect that JDBC would simply return a standard SQL null
> value. I'm not sure whether JDBC returns an specific object
> representing null, or simply a Java null - I suspect the latter.
>
> Chris Hermansen wrote:
>> Martin, I like the direction you're headed in here because it seems it
>> can be done with the technology as-is.
>>
>> Does anybody know what happens if one encounters this while processing
>> through e.g. JDBC? Would one expect an exception of some sort to be
>> thrown?
>>
>> Martin Davis wrote:
>>
>>> Sounds good to me.
>>> If you wanted to see which geoms caused the problem, couldn't you just
>>> run another query looking only for ones which returned NULL from the
>>> operation, and then check the log?
>>>
>>> The log msg could also give the first couple of points of the
>>> offending geoms - that would narrow it down pretty good.
>>>
>>> Does ST_Contains (and the other predicates) ever result in
>>> TopologyExceptions? They are generally pretty darn robust, to my
>>> knowledge. It's the overlay ops which are the real bad boys.
>>>
>>> Paul Ramsey wrote:
>>>
>>>> On 3/12/08, Martin Davis <mbdavis at refractions.net> wrote:
>>>>
>>>>
>>>>
>>>>> Orginally the idea was that it was nice to report the actual
>>>>> nature of
>>>>> the exception, since it contains an indication of where the error
>>>>> occurred. It would be nice to be able to continue to have
>>>>> access to
>>>>> this information. One way to do this would be to have a parallel
>>>>> set of
>>>>> functions which would abort as they do now. Or is there some other
>>>>> way
>>>>> to report this info - to a log somewhere perhaps?
>>>>>
>>>> I prefer using something like NULL to trying to create a new geometry
>>>> type to encompass the error... particularly if the error conditions
>>>> aren't that interesting to people. We can get into the log easily
>>>> enough by using a WARNING log level, the only question then is how to
>>>> identify which geometries caused the failure. One way might be to
>>>> hash the geometries, so that if people want to find their bad
>>>> geometries from the log they can just select for the hash value.
>>>>
>>>> This means that the return values of
>>>>
>>>> ST_Contains(geom,geom) => true, false or null
>>>>
>>>> and
>>>>
>>>> ST_Intersection(geom,geom) => geometry or null
>>>>
>>>> I just checked, and null seems to be interpreted as false in a WHERE
>>>> clause, so adding this behavior probably wouldn't wreck too many
>>>> joins.
>>>>
>>>> Paul
>>>> _______________________________________________
>>>> postgis-users mailing list
>>>> postgis-users at postgis.refractions.net
>>>> http://postgis.refractions.net/mailman/listinfo/postgis-users
>>>>
>>>>
>>
>>
>>
>
--
Regards,
Chris Hermansen · mailto:clh at timberline.ca
tel:+1.604.714.2878 · fax:+1.604.733.0631
Timberline Natural Resource Group · http://www.timberline.ca
401 · 958 West 8th Avenue · Vancouver BC · Canada · V5Z 1E5
C'est ma façon de parler.
More information about the postgis-users
mailing list