Hash: SHA1


While MySQL already provides functionality to store and operate on
geospatial data, the current implementation leaves quite a lot to be
desired and is far from providing full OpenGIS compatibility. Most
notably is that all functions that query spatial data only operate on
MBRs (minimum bounding rectangles,
http://en.wikipedia.org/wiki/Minimum_bounding_rectangle), to simplify
the operations.

Thanks to my colleague Alexey "Holyfoot" Botchkov from Izhevsk, Russia,
some of the spatial relation functions like INTERSECTS and WITHIN now
work in the way they are described by OpenGIS and are no longer limited
to using MBRs. He has been working on improving the GIS functionality as
a side project and the work has now reached a level at which he is ready
to give it some public testing and solicit feedback about it.

Currently these new features have not been slated for inclusion in any
upcoming MySQL major release. But the more feedback and testing this
code receives, the faster it will reach a maturity level that makes it a
potential feature candidate for new versions of MySQL.

In addition to improving already existing functionality, Holyfoot also
implemented some new precise geospatial functions - the following
functions are available now and use precise operations instead of MBRs:

* BUFFER(g1 geometry, d numeric) returns a Geometry defined by buffering
  a distance d around g1 where d is the distance units for the Spatial
  Reference of g1
* DIFFERENCE(g1 geometry, g2 geometry) returns a Geometry that is the
  closure of the set difference of g1 and g2
* DISTANCE(g1 geometry, g2 geometry) returns distance between g1 and g2
* INTERSECTION(g1 geometry, g2 geometry) returns a Geometry that is the
  set intersection of g1 and g2
* SYM_DIFFERENCE(g1 geometry, g2 geometry) returns a Geometry that is
  the closure of the set symmetric difference of g1 and g2 (logical XOR
  of space)
* UNION(g1 geometry, g2 geometry) returns a Geometry that is the set
  union of g1 and g2

This work is documented as WorkLog task #1326 "Precise spatial
operations", which is a subtask of WL#2377 "Add all missing GIS features
to MySQL" - feel free to review and comment on these specifications at
http://forge.mysql.com/worklog/ and make sure to test the new functionality!

The source tree (based on the MySQL 5.1 code base) is now available from
our public BitKeeper trees at
http://mysql.bkbits.net:8080/mysql-5.1-wl1326/ - please consult the
reference manual for more information on how to build a MySQL binary
from a source tree:

To discuss the new GIS functionality, please use our GIS Forum at
http://forums.mysql.com/list.php?23 and make sure to report bugs at our
public Bug Database at http://bugs.mysql.com/ - thanks!

- --
- ------------------------------------------------------------------
 Lenz Grimmer <[EMAIL PROTECTED]>                             -o)
 [ICQ: 160767607 | Jabber: [EMAIL PROTECTED]                /\\
 http://www.lenzg.org/                                       V_V
Version: GnuPG v1.4.5 (GNU/Linux)
Comment: Using GnuPG with SUSE - http://enigmail.mozdev.org


Freegis-list mailing list

Reply via email to