WKT格式使用简单的语法来表示不同类型的几何对象,例如点、线、多边形和多几何对象。
在数据库中经常以WKB(Well-Known Binary)格式格式存储(不同的数据库略有区别),因为它比WKT格式更紧凑和高效。与WKT不同的是WKT以byte数组格式存储并且会有一些标记位,如类型,长度等。
WKT格式以几何对象的名称开头,后跟其坐标。
例如,WKT格式中的点如下所示:POINT(30.0 10.0),表示一个在二维空间中坐标为(30.0,10.0)的点。
类似地,WKT格式中的多边形如下所示:POLYGON((30.0 10.0,40.0 40.0,20.0 40.0,10.0 20.0,30.0 10.0)),表示一个具有五个顶点的多边形,第一个和最后一个顶点相同,形成一个封闭的形状。
WKT格式是一种易于人类阅读的格式,GIS专业人员可以轻松理解和编辑。它也很容易转换为其他格式,例如GeoJSON、KML和Shapefile。
Geometry类型是一个广义的概念,它包括了多种不同的几何类型。在GIS中,常见的Geometry类型包括以下几种:
1. 点(Point):表示一个二维坐标点,由x和y坐标组成。
2. 线(Line):表示由多个点连接而成的线段,可以是直线、曲线等。
3. 多边形(Polygon):表示由多个点组成的封闭区域,可以是简单多边形或复杂多边形。
4. 多点(MultiPoint):表示由多个点组成的集合。
5. 多线(MultiLine):表示由多条线段组成的集合。
6. 多边形集合(MultiPolygon):表示由多个多边形组成的集合。
7. 几何集合(GeometryCollection):表示由多个Geometry对象组成的集合。
除了这些常见的Geometry类型之外,还有一些其他的Geometry类型,例如圆(Circle)、椭圆(Ellipse)等。不同的GIS软件和数据库支持的Geometry类型可能会有所不同。
关于SRID
SRID是空间参考标识符(Spatial Reference Identifier)的缩写,用于标识空间数据的坐标系或参考系统。SRID用于确保在不同的空间数据集之间进行正确的空间数据交互和处理。
比如百度地图与高德地图采用不同的坐标系,所以同样的位置其经纬度坐标会不一样,这需要根据其SRID转换。
SRID 4326是常用的地理坐标系,也被称为WGS84坐标系。它是一种经纬度坐标系统,用于表示地球上的位置信息。
在SRID 4326中,经度(Longitude)的取值范围为-180到+180度,纬度(Latitude)的取值范围为-90到+90度。这个坐标系通常用于地理数据的存储和处理,例如地图、GPS定位等。
使用SRID 4326,可以在MySQL中存储和处理地理数据,如点、线、多边形等。在创建表或插入数据时,可以指定SRID 4326来确保正确解释和处理地理坐标信息。
除了SRID 4326(WGS84坐标系)之外,还存在许多其他常用的SRID,每个SRID代表不同的地理坐标系统或投影坐标系统。以下是一些常见的SRID示例:
常见的SRID:
- SRID 3857(WGS84 Web墨卡托投影):这是一种在Web地图中广泛使用的坐标系统,以米为单位,适用于大部分Web地图服务(如Google Maps、Bing Maps等)。
- SRID 32633(WGS84 UTM投影,北半球,区域33):这是一种适用于北半球的通用横轴墨卡托投影坐标系统,常用于小范围的地理数据分析和地图制图。
- SRID 2193(NZGD2000新西兰地理坐标系):这是新西兰国家大地测量局定义的地理坐标系统,用于处理新西兰境内的地理数据。
- SRID 27700(OSGB36英国国家网格参考系统):这是英国国家网格参考系统的坐标系统,广泛用于英国的地理数据处理和地图制图。
- SRID 4326(WGS84坐标系,前面已提到):这是全球通用的地理坐标系,以经度和纬度表示地球上的位置。
- SRID 4490 是指中国的大地坐标系,也称为CGCS2000坐标系(China Geodetic Coordinate System 2000)。它是中国国家测绘局制定的一种大地坐标系统,用于表示中国境内的地理位置。
在MySQL中,SRID是用于指定Geometry对象的空间参考系统的标识符。MySQL的Geometry类型数据存储格式包含一个4字节的SRID(空间参考标识符)值,紧随其后是Geometry对象的WKB(Well-Known Binary)表示形式。
通过使用SRID,可以确保Geometry对象在不同的坐标系统之间进行正确的转换和比较。每个空间数据集都可以有自己的SRID,用于定义其坐标系和空间参考系统。
在MySQL中,可以使用以下方法来指定SRID:
创建表时指定SRID:
CREATE TABLE my_table (
id INT PRIMARY KEY,
geom GEOMETRY SRID 4326
);
上述示例创建了一个名为my_table的表,其中包含一个geom列,其数据类型为GEOMETRY,并且指定了SRID为4326。
修改现有表的列的SRID:
ALTER TABLE my_table MODIFY COLUMN geom GEOMETRY SRID 4326;
上述示例修改了名为my_table的表中的geom列的SRID为4326。
插入Geometry对象时指定SRID:
INSERT INTO my_table (id, geom) VALUES (1, ST_GeomFromText('POINT(36 120)', 4326));
上述示例向my_table表中插入了一个具有SRID 4326的Point对象。
通过在创建表、修改列或插入数据时指定SRID,可以确保正确处理和解释Geometry对象的空间参考系统。
但是设置了SRID后添加(120 36)数据时 要这样颠倒一下ST_GeomFromText('POINT(36 120)', 4326),不设置时可以直接用ST_GeomFromText('POINT(120 36)')
在MySQL中,当设置了SRID后,ST_GeomFromText函数会根据指定的坐标参考系统对坐标进行解释和解析。对于经纬度坐标来说,通常按照经度在前、纬度在后的顺序表示。例如,SRID为4326的坐标参考系统是WGS84地理坐标系统,它要求坐标的顺序为"经度,纬度"。
因此,当你使用SRID为4326的坐标参考系统时,你需要将经度和纬度的顺序进行颠倒,以保持与该坐标参考系统的一致性。
示例:
ST_GeomFromText('POINT(36.1 120)', 4326)
对于没有设置SRID的情况,默认情况下,MySQL会根据坐标值的顺序进行解析,而不考虑特定的坐标参考系统要求。因此,在没有设置SRID的情况下,可以按照"纬度,经度"的顺序表示经纬度坐标。
示例:
ST_GeomFromText('POINT(120 36.1)')
总结起来,设置了SRID后,需要根据具体的坐标参考系统要求对坐标的顺序进行调整,以保持一致性。而在没有设置SRID的情况下,可以使用默认的坐标顺序进行表示。