天天看點

使用mysql存放空間資料

mysql4.1及以後版本包含了空間資料引擎,可以通過sql語句存取空間資料、進行空間查詢。

mysql的Spatial引擎使用OGC(Open GIS Consortium)定義的WKT(Well-Known Text)/WKB(Well-Known

Binary)格式儲存空間資料。

mysql空間資料模型

    * Geometry (未支援)

          o Point (已支援)

          o Curve (未支援)

                + LineString (已支援)

                      # Line

                      # LinearRing

          o Surface (未支援)

                + Polygon (已支援)

          o GeometryCollection (已支援)

                + MultiPoint (已支援)

                + MultiCurve (未支援)

                      # MultiLineString (已支援)

                + MultiSurface (未支援)

                      # MultiPolygon (已支援)

更多的資訊請查閱 mysql參考文檔第18章(版本4.1.8,其他版本章節号可能有出入)

應用執行個體

geoTable表的結構

字段 類型

 id  INT

 geo GEOMETRY

建表SQL語句

"CREATE TABLE geoTable (`id` int(11) NOT NULL auto_increment, `geo` geometry default NULL,

PRIMARY KEY (`id`)) ENGINE=MyISAM"

注意:隻有MyISAM類型的表支援空間資料

插入一條折線到geoTable表中

INSERT INTO geoTable VALUES (GeomFromText(LINESTRING(0 0,1 1,2 2)));

傳回整個表的資料

"SELECT id, AsText(geo) FROM geoTable"

傳回Polygon區域内的資料

"SELECT id, AsText(geo) FROM geoTable WHERE MBRIntersects(GEO, GeomFromText('Polygon

((...))'))"

完整的應用執行個體可以檢視開源webgis平台openmap的MysqlGeometryLayer.java檔案