问题标签 [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.

0 投票
1 回答
743 浏览

python - to_shape() 失败并出现 ParseException

我一直在尝试使用 GeoAlchemy2,但在解析它的字段时遇到了一些麻烦geom

我尝试在 WKB 元素上使用内置to_shape函数:

示例如下:

我用过:

知道如何解析这个 GeoAlchemy2 geom 字段吗?数据库值有效。

0 投票
3 回答
1978 浏览

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 值?我怎样才能正确解析它?

谢谢你的阅读!

0 投票
2 回答
1392 浏览

r - R - 将 WKB 几何转换为 WKT 表示

有谁知道 R 中的一个包/函数,它将众所周知的二进制 (WKB) 作为输入,并返回它的众所周知的文本 (WKT) 表示?

0 投票
2 回答
2765 浏览

gis - GeoAlchemy2:获取点的纬度、经度

考虑以下带有几何字段的SQLAalchemy/ ORM:GeoAlchemy2

当我在 PostgreSQL shell 中更新一个项目时:

获取字段:

给出:

这不是一个正确的 WKB - 至少,它不能用Shapely 的loads.

我如何获得该字段的lat/ ?longeom

0 投票
2 回答
18270 浏览

postgresql - Postgres 字符串前的“E”是什么?

我正在阅读这样的 Postgres/PostGIS 声明:

以上从众所周知的二进制文件(WKB)创建了一些东西。我还没有看到这里引用的具体方式,其中字符串是单引号,E前面有一个开头的引号。

这种格式叫什么?什么是格式化规则?例如,336%E@最后是特殊的还是只是一些二进制值?

这是 Postgres9.3/9.4;地理信息系统 2.1。

0 投票
0 回答
105 浏览

php - PHP - 从几何 postgis 位置导出高度(z 维)

我有一个 3D 点

01010000A0E6100000075F984C153C4A40705F07CE199141400000000000000000

我想使用 PHP 从中导出 x、y 和 z 维度。我在搜索中找到了 GeoPHP 库,它似乎支持 3D 点。

我使用库就像它的例子:

但是没有定义 getZ() 函数:

解决办法是什么?

0 投票
0 回答
57 浏览

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。我不明白的是:这些数据类型有什么区别?

0 投票
0 回答
254 浏览

.net - 如何使用 VBScript 将 byte() 几何读入点数组?

我有一个二进制文件“geo.bin”,它代表一些几何(我认为是 OGR WKB)。二进制文件有一个组成多边形的点列表。我想读取二进制数据并在我的 VBScript 脚本中创建一个点数组。

是否有我可以利用的现有解决方案?也许像 DbGeometry 这样的 .NET 类?如果是这样,我将如何实例化这样的类?我尝试了以下方法,但收到错误“ActiveX 组件无法创建对象:'GetObject'”:

我也尝试过使用:

但得到一个类似的错误。

0 投票
2 回答
1762 浏览

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 字节整数)但该值与几何类型代码不匹配(此示例适用于一个点坐标)

你能帮助理解这种格式吗?

0 投票
1 回答
484 浏览

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 :

plan1

Estimated Execution plan for Filter#2 :

plan2