问题标签 [wkb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - to_shape() 失败并出现 ParseException
我一直在尝试使用 GeoAlchemy2,但在解析它的字段时遇到了一些麻烦geom
。
我尝试在 WKB 元素上使用内置to_shape
函数:
示例如下:
我用过:
知道如何解析这个 GeoAlchemy2 geom 字段吗?数据库值有效。
java - 使用 JTS Topology Suite 解析 WKB 字符串
几天以来,我一直在为 WKB 字符串苦苦挣扎。我需要能够解析它以获得等效的几何图形并提取点坐标(X,Y,Z)。我不能使用 PostGIS 功能。我发现的唯一 java 库是 JTS Topology Suite,我使用如下:
但它给了我以下错误:
com.vividsolutions.jts.io.ParseException:未知的 WKB 类型 234
234 是十六进制字符串“ea”的十进制值。就像 JTS 库只查看前 2 个字节而不是查看 4 个字节“ea03”,它对应于小端序中的 1002(所以是 LineStringZ)。
我的问题是:JTS 拓扑套件是否处理 LineStringZ ?如果不是,为什么点可以有 Z 值?我怎样才能正确解析它?
谢谢你的阅读!
r - R - 将 WKB 几何转换为 WKT 表示
有谁知道 R 中的一个包/函数,它将众所周知的二进制 (WKB) 作为输入,并返回它的众所周知的文本 (WKT) 表示?
gis - GeoAlchemy2:获取点的纬度、经度
考虑以下带有几何字段的SQLAalchemy
/ ORM:GeoAlchemy2
当我在 PostgreSQL shell 中更新一个项目时:
获取字段:
给出:
这不是一个正确的 WKB - 至少,它不能用Shapely 的loads
.
我如何获得该字段的lat
/ ?lon
geom
postgresql - Postgres 字符串前的“E”是什么?
我正在阅读这样的 Postgres/PostGIS 声明:
以上从众所周知的二进制文件(WKB)创建了一些东西。我还没有看到这里引用的具体方式,其中字符串是单引号,E
前面有一个开头的引号。
这种格式叫什么?什么是格式化规则?例如,336%E@
最后是特殊的还是只是一些二进制值?
这是 Postgres9.3/9.4;地理信息系统 2.1。
php - PHP - 从几何 postgis 位置导出高度(z 维)
我有一个 3D 点
01010000A0E6100000075F984C153C4A40705F07CE199141400000000000000000
我想使用 PHP 从中导出 x、y 和 z 维度。我在搜索中找到了 GeoPHP 库,它似乎支持 3D 点。
我使用库就像它的例子:
但是没有定义 getZ() 函数:
解决办法是什么?
database - PostGis 和数据类型 WKT
我对地理数据库没有任何经验,所以我希望你对我有耐心,问题是:我知道如果你关心的只是测量距离和长度并且你有来自各地的数据,那么使用地理数据类型如果您对空间参考系统非常满意,或者您正在处理所有数据都适合单个空间参考系统 (SRID) 的本地化数据,或者您需要做很多空间参考系统,那么最好使用世界和数据类型几何处理(这就是我在 postgis 文档的第 3 章中读到的内容),我在链接https://www.tutorialspoint.com/postgresql/postgresql_data_types.htm上看到了以下数据类型:点、线、lseg、框、路径、路径、多边形和圆。然后我在 4.1.3 SQL-MM Part 3 部分再次看到了 postgis 的文档,该文档关于以下类型的扩展名众所周知的文本:circleString、compoundCurve、curvePolygon、multiCurve、multiSurface。我不明白的是:这些数据类型有什么区别?
.net - 如何使用 VBScript 将 byte() 几何读入点数组?
我有一个二进制文件“geo.bin”,它代表一些几何(我认为是 OGR WKB)。二进制文件有一个组成多边形的点列表。我想读取二进制数据并在我的 VBScript 脚本中创建一个点数组。
是否有我可以利用的现有解决方案?也许像 DbGeometry 这样的 .NET 类?如果是这样,我将如何实例化这样的类?我尝试了以下方法,但收到错误“ActiveX 组件无法创建对象:'GetObject'”:
我也尝试过使用:
但得到一个类似的错误。
sql-server - sql server中geography数据类型的格式是如何构建的?
我无法理解 SQL Server 中的数据类型地理位置如何......例如我有以下数据:
我知道的:
0x 是十六进制的前缀
最后 16 个数字是经度:B2F336363BCA21C0(十进制格式的双倍)
最后 16 位之前的 16 位数字是纬度:CEAACFD556484340(十进制的双倍格式)
前 4 个数字是 SRID:E610(WGS84 的十六进制)
我不明白的是:
从 5 到 12 的数字:0000010C
这是什么?
从我读到的内容看来,这似乎与 WKB(众所周知的二进制)或 EWKB(扩展的众所周知的二进制)有关,无论如何我无法找到 EWKB 的定义......而对于 WKB,这应该是几何类型(4 字节整数)但该值与几何类型代码不匹配(此示例适用于一个点坐标)
你能帮助理解这种格式吗?
sql - .NET framework error when enabling where clause in sql query
I am facing a weird issue wherein on disabling/enabling certain condition in where
clause, my Select query throws .net framework error.
Here is the CREATE
table script.
Table test_classes:
Table test_polygon:
Due to word limitation (due to image datatype), here is the INSERT
input: GDrive SQL Link
SELECT
SQL query:
To note, Class_ID 215 represents 'L1_County' class_name.
Problem is, if you enable Filter#1, then the output is as expected. But when I only enable Filter#2 then the query fails with .NET Error
.
Expected output :
Error I get :
Msg 6522, Level 16, State 1, Line 4
A .NET Framework error occurred during execution of user-defined routine or aggregate "geometry":
System.FormatException: 24119: The Polygon input is not valid because the start and end points of the exterior ring are not the same. Each ring of a polygon must have the same start and end points.System.FormatException:
at Microsoft.SqlServer.Types.GeometryValidator.ValidatePolygonRing(Int32 iRing, Int32 cPoints, Double firstX, Double firstY, Double lastX, Double lastY)
at Microsoft.SqlServer.Types.Validator.Execute(Transition transition)
at Microsoft.SqlServer.Types.ForwardingGeoDataSink.EndFigure()
at Microsoft.SqlServer.Types.WellKnownBinaryReader.ReadLineStringPoints(ByteOrder byteOrder, UInt32 cPoints, Boolean readZ, Boolean readM)
at Microsoft.SqlServer.Types.WellKnownBinaryReader.ReadLinearRing(ByteOrder byteOrder, Boolean readZ, Boolean readM)
at Microsoft.SqlServer.Types.WellKnownBinaryReader.ParseWkbPolygonWithoutHeader(ByteOrder byteOrder, Boolean readZ, Boolean readM)
at Microsoft.SqlServer.Types.WellKnownBinaryReader.ParseWkb(OpenGisType> type) > at Microsoft.SqlServer.Types.WellKnownBinaryReader.Read(OpenGisType type, Int32 srid)
at Microsoft.SqlServer.Types.SqlGeometry.GeometryFromBinary(OpenGisType type, SqlBytes binary, Int32 srid) .
What I am trying to ask is, Why do I get error when WHERE
clause has Class_Name and not when Class_ID.
I am using SQL Server 2012 Enterprise edition. Error replicates in SQL Server 2008 as well.
edit:
Estimated Execution plan for Filter#1 :
Estimated Execution plan for Filter#2 :