WKT、SRID、EPSG概念(转)

之前一直对WKT、EPSG、SRID不是很理解,总是混淆,今天看了一下,清晰了很多,顺便总结一下,嘿嘿:)


EPSG:European Petroleum Survey Group (EPSG), http://www.epsg.org/,它成立于1986年,并在2005年重组为OGP(Internation Association of Oil & Gas Producers),它负责维护并发布坐标参照系统的数据集参数,以及坐标转换描述,该数据集被广泛接受并使用,通过一个Web发布平台进行分发,同时提供了微软Acess数据库的存储文件,通过SQL 脚本文件,mySQL, Oracle 和PostgreSQL等数据库也可使用。
目前已有的椭球体,投影坐标系等不同组合都对应着不同的ID号,这个号在EPSG中被称为EPSG code,它代表特定的椭球体、单位、地理坐标系或投影坐标系等信息。




SRID:,OGC标准中的参数SRID,也是指的空间参考系统的ID,与EPSG一致;


WMS 1.1.1以前用SRS参数(空间参考系)表示坐标系统,WMS1.3开始用CRS参数(坐标参考系统)来表示。


A Spatial Reference System Identifier(SRID) is a unique value used to unambiguously identify projected, unprojected, and local spatial coordinate system definitions. These coordinate systems form the heart of all GIS applications.


Virtually all major spatial vendors have created their own SRID implementation or refer to those of an authority, such as the European Petroleum Survey Group (EPSG). (NOTE: As of 2005 the EPSG SRID values are now maintained by the International Association of Oil & Gas Producers (OGP) Surveying & Positioning Committee).


以OGC请求为例:


http://localhost/IS/WebServices/wms.ashx?map=World&SERVICE=WMS&REQUEST=GetMap&LAYERS=&STYLES=&SRS=EPSG:4326&BBOX=-3,44,10,53&WIDTH=600&HEIGHT=300&FORMAT=image/gif&BGCOLOR=&VERSION=1.1.1


SRS=EPSG:4326代表地理坐标系WGS1984


WKT:空间参考系统的文字描述;


无论是参考椭球、基准面、投影方式、坐标单位等,都有相应 的EPSG值表示,如下表:






举例:


Beijing 1954地理坐标系,高斯--克吕格投影(横轴等角切圆柱投影)


下面为投影相关信息:


投影方式 Gauss_Kruger
中央经线 75.000000
原点纬线 0.000000
标准纬线(1) 0.000000
标准纬线(2) 0.000000
水平偏移量 13500000.000000
垂直偏移量 0.000000
比例因子 1.000000
方位角   0.000000
第一点经线 0.000000
第二点经线 0.000000
地理坐标系 GCS_Beijing_1954
大地参照系 D_Beijing_1954
参考椭球体 Krasovsky_1940
椭球长半轴 6378245.000000
椭球扁率 0.0033523299
本初子午线 0.000000


WKT形式表示该投影坐标系:


PROJCS["Gauss_Kruger",
GEOGCS["GCS_Beijing_1954",
   DATUM["D_Beijing_1954",
    SPHEROID["Krasovsky_1940",6378245.000000,298.299997264589]] 
   ]
PEIMEM["Greenwich",0] 
UNIT["degree",0.0174532925199433]//地理单位:0.0174532925199433代表与米之间的转换
],
PROJECTION["Gauss_Kruger"],
PARAMETER["False_Easting",13500000.000000],
PARAMETER["False_Northing",0],
PARAMETER["Central_Meridian",75.000000],
PARAMETER["Scale_Factor",1.0],
PARAMETER["Latitude_Of_Origin",0.0],
UNIT["Meter",1.0]] ;
<think>我们正在处理一个关于在QGIS中加载WKT格式的PolygonZ数据的问题。用户之前询问了如何使用C++Boost.Geometry解析WKTPolygonZ,现在向了QGIS工具。根据引用内容,我们知道WKT是一种常用的几何数据文本表示格式。QGIS作为GIS软件,自然支持WKT的导入。解决方案:1.使用QGIS的"坐标捕获"面板中的"以WKT绘制"工具手动绘制。2.通过文本文件或图层属性表中的字段导入WKT数据(使用“添加虚拟图层”或“从文本图层导入”)。下面给出详细的步骤:方法一:使用QGIS的“坐标捕获”面板绘制(适用于少量数据)步骤:1.打开QGIS,确保“坐标捕获”面板可见(视图->面板->坐标捕获)。2.在坐标捕获面板中,选择“以WKT绘制”选项卡。3.在文本框中输入PolygonZ的WKT字符串,例如:POLYGONZ((000,050,550,500,000))4.点击“绘制”按钮,该几何图形将作为临时图层添加到画布上。方法二:通过文本文件导入(适用于批量数据)1.准备一个文本文件(如CSV),其中至少包含一个列(例如“wkt_geom”)存储WKT字符串,每行一个PolygonZ。wkt_geom"POLYGONZ((000,050,550,500,000))""POLYGONZ((111,161,661,611,111))"2.在QGIS中选择“图层”->“添加图层”->“添加文本数据图层...”。3.在对话框中:-文件格式:CSV-文件名:选择你的CSV文件-几何定义:选择“WKT”-几何字段:选择包含WKT字符串的列名(如“wkt_geom”)-几何类型:如果知道具体的几何类型(如PolygonZ),可以手动选择,但通常QGIS能自动识别。-确保“文件包含几何定义”已勾选。-坐标系:选择正确的坐标系(如果知道SRID,例如EPSG:4326)4.点击“添加”,然后点击“关闭”。如果导入成功,图层将出现在QGIS中。注意:如果WKT字符串中包含Z坐标,QGIS会自动创建3D几何图形。在属性表中,可以通过表达式`z($geometry)`来获取点的Z值。方法三:通过虚拟图层(适用于存储在数据库表或现有图层字段中的WKT)1.如果WKT字符串存储在现有图层的属性表中,可以创建一个虚拟图层:-菜单“图层”->“添加图层”->“添加/编辑虚拟图层...”-在查询中,使用`GeomFromText(WKT_column)`将文本换为几何图形,例如:SELECTid,GeomFromText(wkt_column)asgeometryFROMexisting_table-注意:确保wkt_column字段中的字符串是有效的WKT,并且包含Z坐标。2.执行查询,然后添加该虚拟图层。验证3D效果:在QGIS中,默认的2D视图可能不会显示Z坐标。你可以:-使用表达式(在标注或符号化中)显示Z值。-如果需要进行3D可视化,可以使用QGIS的3D视图(视图->新建3D地图视图),并将图层的3D属性设置为基于Z坐标的高度。如果遇到导入问题,检查以下内容:-WKT格式是否正确(例如,括号匹配,坐标之间用逗号分隔,坐标点之间用空格分隔,闭合多边形首尾点相同)。-确保在PolygonZ中每个点都有三个坐标值。-如果WKT字符串中包含Z但导入后没有Z坐标,可能是QGIS识别错误,尝试在几何类型中强制指定为PolygonZ(在添加文本图层时设置几何类型为“Polygon25D”或“PolygonZ”)。注意:QGIS中三维几何的类型称为“Polygon25D”(即带有Z值的2.5维),但WKT中使用“Z”标识。示例:有效的PolygonZWKT```wktPOLYGONZ((000,050,550,500,000))```附加说明:QGIS内部使用GEOS库来解析WKT,因此遵循OGC标准。如果遇到不支持的语法(如M值、曲线等),可能需要简化WKT。现在生成相关问题:</think> ### 在 QGIS 中加载 WKT 格式的 PolygonZ 数据 #### 📌 核心解决方案(3 种方法) 1. **文本文件导入法**: ```mermaid graph TD A[创建CSV/TXT文件] --> B[包含WKT字段] B --> C[文件格式:<br>geom<br>\"POLYGON Z((0 0 0, 0 5 0, 5 5 0, 5 0 0, 0 0 0))\...\"] C --> D[图层→添加图层→添加文本图层] D --> E[几何定义→WKT<br>选择geom字段] ``` 2. **属性表创建法**: ```python # QGIS Python控制台示例代码 layer = iface.activeLayer() layer.dataProvider().addAttributes([QgsField("wkt_geom", QVariant.String)]) layer.updateFields() # 添加WKT数据 with edit(layer): feat = QgsFeature(layer.fields()) feat.setAttribute("wkt_geom", "POLYGON Z((0 0 0, 0 5 0, 5 5 0, 5 0 0, 0 0 0))") layer.addFeature(feat) ``` 3. **虚拟图层法**: ```sql -- 新建虚拟图层SQL CREATE TABLE poly3d AS SELECT 1 AS id, GeomFromText('POLYGON Z((0 0 0, 0 5 0, 5 5 0, 5 0 0, 0 0 0))') AS geometry ``` #### 🔍 详细操作指南(文本文件导入) 1. **准备数据文件**: - 创建 `polyz_data.csv`: ``` id,geom 1,"POLYGON Z((0 0 0, 0 5 0, 5 5 0, 5 0 0, 0 0 0))" 2,"POLYGON Z((1 1 1, 1 6 1, 6 6 1, 6 1 1, 1 1 1))" ``` 2. **导入QGIS**: - `图层 → 添加图层 → 添加文本图层` - 设置参数: - 文件格式:CSV - 几何定义:WKT - 几何字段:选择包含WKT的列名(如`geom`) - 坐标系:指定EPSG(如EPSG:4326) 3. **3D可视化**: - 加载后在图层右键 → `属性` - 启用3D渲染: ```mermaid graph LR A[3D视图] --> B[高程] B --> C[使用顶点z值] C --> D[设置缩放因子] ``` #### ⚠️ 关键注意事项 1. **WKT格式要求**: - 必须包含`Z`标识符:`POLYGON Z(...)` - 每个顶点必须是三维:`X Y Z`(如`5 0 0`) - 首尾点需闭合:`POLYGON Z((0 0 0, ... , 0 0 0))` 2. **数据验证工具**: - 处理完成后运行`矢量 → 几何工具 → 检查几何有效性` - 修复错误:`z(qgis_geometry) > 0` 验证Z值 3. **坐标换**: $$ \text{变换矩阵} = \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos\theta & -\sin\theta \\ 0 & \sin\theta & \cos\theta \end{bmatrix} $$ 在QGIS中使用:`处理 → 工具箱 → 仿射变换` #### 💡 应用场景示例 ```mermaid pie title QGIS中3D多边形应用场景 “地形建模” : 45 “地质层分析” : 25 “建筑体量” : 20 “管道网络” : 10 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值