问题标签 [boost-geometry]

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

c++ - Boost::Geometry union 简化 - 它是如何工作的?

Boost中有很棒的几何库。它还允许绘制 SVG 图像。我想在我的某个项目中使用它,但它对我来说真的很奇怪(见下图)。

所以我们有 3 个像素点在 2d 空间中表示为方形 poligon

在此处输入图像描述 pic 1

我们想从他们那里得到一个联合并简化它,这样当我们缩放它时,我们会得到一个三角形

在此处输入图像描述 pic 2

但我们得到了这个:

在此处输入图像描述

其中黄色虚线是联合,绿色是简化。

源代码:

至少需要 boost/geometry/extensions/io/svg/ 中的 boost 1.47.0 和 3 个文件

那么如何让它像我想要的那样简化pic 2呢?

更新

创建了新代码,工作正常,经过充分测试:

这段代码创建了这样的图像:

在此处输入图像描述

对于 3 点,它会返回类似@J 的图像。Calleja回答:

在此处输入图像描述

0 投票
2 回答
3137 浏览

c++ - Boost::Geometry:如何在 multi_polygon 中加入相交的多边形?

所以我想将所有相互关联的 poligons 加入一个 multi_polygon。怎么做这样的事情?

我们有这样一个我们想要优化的图像(一个绿色的 multi_polygon)(我们可以看到黄色虚线 - 显然是在 multi_polygon 的每个 poligon 而不是一般 multi_polygon 上执行的简化结果):

在此处输入图像描述

这是生成此类图像的可编译代码:

至少需要 boost/geometry/extensions/io/svg/ 中的 boost 1.47.0 和 3 个文件

我需要的很简单:如何对相互关联的 poligons 进行分组?在这种情况下,我们将在 multy_poligon 中获得 2 个 poligon,如下所示 - 红色和绿色:

在此处输入图像描述

更新:

所以我找到了有关溶解的信息,并创建了使用环创建 cels 的示例代码:

它返回这样的环图像:

在此处输入图像描述

如果我们可以使用溶解将其变成 poligon,那将真正解决我的一些问题。但看起来目前我们不能因为这里描述的这个编译器错误问题

0 投票
2 回答
605 浏览

c++ - 是我还是 Boost Track SVN(Boost Geometry Extension Dissolve)的一部分无法编译?

Boost geometry 的溶解在这里描述了一点,这是我现在需要的,它的 SVN 主页就在这里,但是一旦我加入#include <boost/geometry/extensions/algorithms/dissolve.hpp>我就会得到编译错误(错误 C4430、C2146 和 C2061)=(任何人都可以提供补丁吗?

示例代码可以在这里找到例如

错误:

最少的代码看起来像(在 VS2010 上测试失败并出现警告错误):

0 投票
0 回答
465 浏览

c++ - Boost::geometry 是如何将 MultiPoint 变成带孔的 Poligon?

所以我们有一组点。像这样:

在此处输入图像描述

我们希望得到带孔的统一多边形(计算为每个点都是具有一定半径的正方形或圆形,并且该多边形将是这些点的并集):

在此处输入图像描述

(以绿色显示)

如您所见,它既不是Convex hull也不是Concave Hull。它只是点下的区域,每个点都有给定的区域。

是否有可能用 boost 几何做这样的事情,如果可以,怎么做?

0 投票
2 回答
2633 浏览

c++ - Boost::Geometry 交点未按预期工作

我有一个小测试应用程序可以将几个矩形与 boost::geometry 相交。

我必须做错事,因为我希望结果是这样的,(35 30, 35 40, 25 40, 25 30, 35 30)但我得到了 10 点长的多边形,其中包含点,50 0而平行矩形的交点应该始终是具有 4+1 点的矩形并且50 0位于边缘,所以它不应该是在十字路口。如果我将它放入SVG中,矩形似乎与我期望的一样。

有什么问题?如果这是一个错误,我该boost::geometry如何确保它是?(我目前使用的是 1.48。)如果它是一个错误,有没有办法绕过这个问题?

0 投票
1 回答
2244 浏览

c++ - 提升几何+ WGS84,纬度和经度,但不是高度?

我希望对 WGS84 椭球进行一些计算,包括:表面上的多边形中的点、点之间的距离计算以及与笛卡尔坐标之间的转换。看起来有一个 GIS 扩展来增强几何结构,它基本上可以满足我的需要 - 除了它似乎没有将高度转换为笛卡尔坐标或从笛卡尔坐标转换 - 只有 X/Y 和 Lat/Lon。我错过了什么吗?这可能吗?有没有人有什么建议?

0 投票
1 回答
1332 浏览

c++ - boost::geometry: for_each_segment 怎么做?

我试图弄清楚它how boost::geometryfor_each_segment工作原理。文档告诉我,它for_each_segment需要一个几何图形和一个仿函数。在我的示例中调用了这个函子polylength_helper,只要这个片段没有编译,我就在那里增加一个数字以保持简单,直到它编译。

好吧,这不会编译。我使用clang了一个更易于理解的输出,它说:

谁能帮我吗?特别是我不知道referring_segment消息中的来自哪里。

这是文档中的一个示例:

http://www.boost.org/doc/libs/1_48_0/libs/geometry/doc/html/geometry/reference/algorithms/for_each/for_each_segment_2_const_version.html

但我无法弄清楚这与我的版本有何不同,除了typedefs.

0 投票
1 回答
410 浏览

c++ - 如何使用 Boost.Geometry 检查一个环是否包含在另一个环中?

我正在尝试使用 Boost.Geometry 库确定一个环是否包含在另一个环中。

我写了以下代码:

但它无法编译(使用 Boost 1.48.0),因为它无法通过以下静态断言within

似乎within只支持检查一个点是否在另一个几何图形内(根据文档)。

我正在考虑将环视为线串,然后检查它们是否intersect,如果不是 - 检查环的第一个点是否在另一个环内;但我不知道是否可以避免将每个复制ringlinestring.

有没有办法实现withinfor two ring 的功能(性能合理)?

0 投票
1 回答
1743 浏览

c++ - 如何创建一个 Boost.Range 隐藏多层向量并将其公开为单个 Range?

我有一个无法修改的遗留类层次结构。由于外部库的要求,我需要为 Line 和 Ring 定义 Boost.Ranges,它们都只在一次运行中暴露点(即,对于 Line 和 Ring,它应该是 Boost.Range 的点) .

伪代码来说明:

这条线很简单,因为点是直接存储的(我已经使用 Boost.Range 成功完成了此操作,请参见示例)。但是,我不知道如何使用 Ring 来执行此操作,因为我需要直接到达每条线路的点。

0 投票
1 回答
217 浏览

boost-geometry - 如何比较 Boost 几何?

我有 2 个 boost::geometry::model::ring 并且我试图判断它们是否相同。是否有内置的增强几何比较功能/方法可以为我解决这个问题?