问题标签 [geos]

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 回答
2956 浏览

postgresql - 在 geos/postgis 重新编译后恢复 postgresql/postgis 备份策略?

现在的情况:

  • Ubuntu 8.04 服务器版(直播服务器)
  • Postgresql 8.3.7(来自标准存储库)
  • Postgis 1.3.3(来自标准存储库)
  • GEOS 2.3.4(来自标准存储库)

问题:

GEOS 包含在 3.0 版本中修复的错误。我遇到了这些问题,需要升级 GEOS/Postgis 以包含 GEOS 修复程序。

我现在站在哪里:

在具有几乎相同设置的测试机器上,我删除了 postgis 包并尝试针对 Postgis 1.3.5 和 Postgresql 8.3.7 重新编译 Geos 3.1.0。

修复一些链接和路径问题后,此方法有效。

我的具体问题:

将我的数据库(表、函数、触发器、gist 索引、数据...)从“基于较旧的 geos/postgis”版本迁移到“较新”版本的最佳方法是什么?

我会尝试文档中描述的“软升级”方式,但你认为这会奏效吗?

对这个启用了 postgis 的数据库进行完整备份的最佳方法是什么,以便我可以在我正在编译的“较新的 postgis 版本”上完全恢复它?

0 投票
1 回答
1843 浏览

python - Using UTM with geodjango

I'm looking into using the UTM coordinate system with geodjango. And I can't figure out how to get the data in properly.

I've been browsing the documentation and it seems that the "GEOSGeometry(geo_input, srid=None)" or "OGRGeometry" could be used with an EWKT, but I can't figure out how to format the data.

It looks like the UTM SRID is: 2029

From the wikipedia article the format is written like this:

[UTMZone][N or S] [easting] [northing]

17N 630084 4833438

So I tried the following with no luck:

Are there any example available to show how this is done?

May be I should just do any necessary calulations in UTM and convert to decimal degrees?
In this case does GEOS or other tools in geodjango provide convertion utitilites?

0 投票
3 回答
14894 浏览

python - 如何将 GEOS MultiLineString 转换为多边形?

我正在开发一个 GeoDjango 应用程序,用户可以在其中上传地图文件并执行一些基本的映射操作,例如查询多边形内的特征。

我认识到用户有时会上传“MultiLineString”而不是“Polygon”。这会导致期望封闭几何的查询失败。

在 Python 中将 MultiLineString 对象转换为多边形的最佳方法是什么?

0 投票
3 回答
9699 浏览

geometry - 如何修复自相交的多边形?

有没有办法使用 GEOS 从多边形中删除自相交?

0 投票
2 回答
7258 浏览

django - GeoDjango:如何根据点和半径创建一个圆

我有以下(简化)模型:

我想根据给定的点和半径创建并保存一个表示圆的多边形。

我能弄清楚如何实现这一点的唯一方法是使用原始 SQL 调用 postgis ST_Buffer 函数。我真的希望有另一种方法。

是否可以访问 GEOS 缓冲区方法?

0 投票
3 回答
16402 浏览

windows - 如何在 Windows 上为 GeoDjango 安装 GEOS

我正在使用 Python 2.5、Django 1.2、MySQL 和 Apache 开始一个 GeoDjango 项目。该项目将上传到 Linux 服务器,但开发将在 Windows 上进行。

问题是我无法通过安装 GEOS,它是如何完成的?

0 投票
1 回答
844 浏览

postgis - 在 PostGIS 中,大于世界一半的多边形被视为相反

我正在将 GeoDjango 与 PostGIS 一起使用,并尝试使用多边形从位于其中的数据库中获取记录。

如果我定义一个大于地球面积一半的多边形,它假定我的多边形的“内部”是我打算作为“外部”的较小区域,并且只返回它之外的结果。

我可以使用这个较小的错误区域来排除结果。Polygon.area 似乎知道我的意图,因此我可以使用它来确定何时使我的搜索包含或排除。我觉得这个问题可能很常见,有没有更好的方法来解决它?

更新:如果 180 度经度在我的多边形内,这根本不起作用。这次似乎是 GEOS 的罪魁祸首。这张图片显示了我认为的原因。绿色是我定义的多边形,红色是它似乎是如何解释它的。地球上的多边形同样,这似乎是一个经常出现的问题,并且像 GEOS 这样的库是用来处理的。有办法吗?

0 投票
1 回答
710 浏览

postgis - PostGIS - 某些 MultiPolygons 导致“BOOM!无法生成外点!”

我试图代表一个跨越 180 度经度的矩形区域。有关更多背景信息,请参见在 PostGIS 中,大于世界一半的多边形被视为相反

这是我的测试用例:

通过更改数字,我可以使这个错误来来去去。(-180, -80, x, 80) 例如在 x <= -140 的情况下工作。对于每个数字,都有一个像这样的阈值,但我找不到模式。对于具有相同面积的盒子,有些可以工作,有些则不能。对于具有相同宽度的盒子,有些可以工作,有些则不行。

我可以查看正在生成的 SQL,但这些区域以二进制 (EWKB) 表示,我不确定如何读取它。

谁能解释一下?

0 投票
2 回答
735 浏览

django - GeoDjango:加速 GEOS 的几何运算

我正在使用 GeoDjango + PostGIS 开发空间排名应用程序。基本上它的作用是检索查询边界框中的所有几何图形,使用我创建的自定义函数计算相似度得分,然后返回得分最高的形状。

目前,每个查询的往返时间非常慢。运行分析器显示瓶颈是由我的相似函数内部threadsafe.pyGEOSGeometry操作(即相交、联合、包含等)调用的。这是来自单个查询的示例分析器结果。看起来线程安全的性质GEOSGeometry是导致性能问题的原因。单独来说,耗时 40 毫秒的操作似乎没什么大不了的,但因为要与查询进行比较的形状数量通常很大,即约 1000 个形状,所以 40 毫秒的操作加起来需要 40 秒。

因此,我的问题是如何优化功能以最小化周转时间。我最初的一些想法是:

  1. 关闭/避免 的安全性检查GEOSGeometry,因为这些对象是瞬态的,不与任何其他线程共享。如果可能的话,这将是理想的情况,因为现在花费的大部分时间都在threadsafe.py
  2. 使用另一个不安全的几何 API。
  3. 在 PostGIS 级别而不是对象级别执行空间操作。不过,这会使代码看起来很难看。更新:此选项不起作用。仅 SQL 查询的开销会使操作变得更慢。)

你有什么想法?

0 投票
3 回答
3524 浏览

r - 在 Mac OS X Lion 上安装 rgeos 和 rgdal 时出现问题

我正在尝试安装 rgeos 包(和 rgdal)包。我有一个运行 os x 10.7.1 的 macbook pro,我有最新版本的 R,2.13.1。我正在遵循该站点的说明:http: //lostingeospace.blogspot.com/2011/08/rgeos-on-macos-x.html

我已经从http://www.kyngchaos.com/software:frameworks安装了最新的 GDAL 完整框架 1.8,并从 CRAN 下载了源文件 rgeos_0.1-8.tar.gz。

在终端中,我按照说明输入以下内容:

为了彻底,这里是整个输出:

rgdal 安装也会出现同样的问题。

我不是真正的程序员....有人知道我应该做什么吗?

谢谢!