加载中...
搜索中...
无匹配项
工厂方法

用于创建坐标迭代器的工厂方法。 更多...

函数

template<typename FirstIter, typename SecondIter>
auto cuspatial::make_vec_2d_iterator (FirstIter first, SecondIter second)
 从两个输入迭代器创建一个指向 vec_2d 数据的迭代器。
 
template<typename Iter>
auto cuspatial::make_vec_2d_iterator (Iter xy_begin)
 从单个迭代器创建一个指向 vec_2d 数据的迭代器。
 
template<typename FirstIter, typename SecondIter>
auto cuspatial::make_vec_2d_output_iterator (FirstIter first, SecondIter second)
 从两个输出迭代器创建一个指向 vec_2d 数据的输出迭代器。
 
template<typename Iter>
auto cuspatial::make_vec_2d_output_iterator (Iter d_points_begin)
 从一个指向交错数组的迭代器创建一个指向 vec_2d 数据的输出迭代器。
 
template<typename FirstIter, typename SecondIter>
auto cuspatial::make_box_iterator (FirstIter first, SecondIter second)
 从两个 vec_2d 输入迭代器创建一个指向 box 数据的迭代器。
 
template<typename MinXIter, typename MinYIter, typename MaxXIter, typename MaxYIter>
auto cuspatial::make_box_output_iterator (MinXIter min_x, MinYIter min_y, MaxXIter max_x, MaxYIter max_y)
 从多个输出迭代器创建一个指向 box 数据的输出迭代器。
 
template<typename IndexT, typename GeometryIter>
auto cuspatial::make_geometry_id_iterator (GeometryIter offsets_begin, GeometryIter offsets_end)
 创建一个输入迭代器,该迭代器根据输入偏移范围为每个元素生成从零开始的顺序几何体 ID。
 
template<typename IndexT, typename GeometryIter, typename PartIter>
auto cuspatial::make_geometry_id_iterator (GeometryIter geometry_offsets_begin, GeometryIter geometry_offsets_end, PartIter part_offsets_begin)
 创建一个输入迭代器,该迭代器根据输入的几何体和部分偏移范围,为嵌套几何体的每个元素生成从零开始的顺序几何体 ID。
 
template<typename OffsetIterator>
auto cuspatial::make_count_iterator_from_offset_iterator (OffsetIterator it)
 

详细描述

用于创建坐标迭代器的工厂方法。

CuSpatial 仅头文件 API 函数只接受输入/输出迭代器。这些工厂方法使得从各种格式的数据创建迭代器变得更容易。

函数文档

◆ make_box_iterator()

template<typename FirstIter, typename SecondIter>
auto cuspatial::make_box_iterator ( FirstIter first,
SecondIter second )

从两个 vec_2d 输入迭代器创建一个指向 box 数据的迭代器。

将来自不同迭代器的 box_min 和 box_max 点交错到一个单独的 box 迭代器中。

模板参数
向量类型cuSpatial 向量类型,必须是 vec_2d
FirstItervec_2d 的迭代器。必须满足 LegacyRandomAccessIterator 的要求并且可设备访问。
SecondItervec_2d 的迭代器。必须满足 LegacyRandomAccessIterator 的要求并且可设备访问。
参数
firstbox::v1 开头的迭代器
secondbox::v2 开头的迭代器
返回值
指向 box 的迭代器
前置条件
firstsecond 必须迭代相同的 vec_2d 数据类型。

定义于文件 iterator_factory.cuh308 行。

◆ make_box_output_iterator()

template<typename MinXIter, typename MinYIter, typename MaxXIter, typename MaxYIter>
auto cuspatial::make_box_output_iterator ( MinXIter min_x,
MinYIter min_y,
MaxXIter max_x,
MaxYIter max_y )

从多个输出迭代器创建一个指向 box 数据的输出迭代器。

从单独的坐标迭代器创建一个输出迭代器,可将箱体顶点的交错 x/y 数据(每个箱体 2 个顶点)写入其中。这允许将四个独立的输出数据数组用于需要指向结构化箱体数据的迭代器的 API。

模板参数
MinXIter第一个箱体顶点的 x 坐标的迭代器类型。必须满足 LegacyRandomAccessIterator 的要求,可变且可设备访问。
MinYIter第一个箱体顶点的 y 坐标的迭代器类型。必须满足 LegacyRandomAccessIterator 的要求,可变且可设备访问。
MaxXIter第二个箱体顶点的 x 坐标的迭代器类型。必须满足 LegacyRandomAccessIterator 的要求,可变且可设备访问。
MaxYIter第二个箱体顶点的 y 坐标的迭代器类型。必须满足 LegacyRandomAccessIterator 的要求,可变且可设备访问。
参数
min_x第一个箱体顶点的 x 数据开头的迭代器。
min_y第一个箱体顶点的 y 数据开头的迭代器。
max_x第二个箱体顶点的 x 数据开头的迭代器。
max_y第二个箱体顶点的 y 数据开头的迭代器。
返回值
指向 box 的迭代器
前置条件
输入迭代器必须迭代相同的数据类型。

定义于文件 iterator_factory.cuh348 行。

◆ make_count_iterator_from_offset_iterator()

template<typename OffsetIterator>
auto cuspatial::make_count_iterator_from_offset_iterator ( OffsetIterator it)

定义于文件 iterator_factory.cuh429 行。

◆ make_geometry_id_iterator() [1/2]

template<typename IndexT, typename GeometryIter, typename PartIter>
auto cuspatial::make_geometry_id_iterator ( GeometryIter geometry_offsets_begin,
GeometryIter geometry_offsets_end,
PartIter part_offsets_begin )

创建一个输入迭代器,该迭代器根据输入的几何体和部分偏移范围,为嵌套几何体的每个元素生成从零开始的顺序几何体 ID。

这可用于任何两级嵌套多几何体偏移,例如多多边形。

示例

auto poly_offsets = std::vector<int>({0, 1, 3}); // poly 1 has 2 rings
auto ring_offsets = std::vector<int>({0, 4, 7, 10});
auto iter =
make_geometry_id_iterator<int>(poly_offsets.begin(), poly_offsets.end(), ring_offsets.begin());
auto ids = std::vector<int>(13);
std::copy_n(iter, 13, ids.begin());
// ids now contains [0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2]
auto make_geometry_id_iterator(GeometryIter offsets_begin, GeometryIter offsets_end)
创建一个输入迭代器,该迭代器根据...为每个元素生成从零开始的顺序几何体 ID。
模板参数
GeometryIter偏移量迭代器类型。必须满足 LegacyRandomAccessIterator 的要求并且可设备访问。
参数
offsets_begin几何体偏移量范围的开始
offsets_end几何体偏移量范围的结束
part_offsets_begin部分(例如环)偏移量范围的开始
返回值
一个迭代器,用于遍历由偏移量定义的每个几何体的每个元素的唯一 ID

定义于文件 iterator_factory.cuh415 行。

◆ make_geometry_id_iterator() [2/2]

template<typename IndexT, typename GeometryIter>
auto cuspatial::make_geometry_id_iterator ( GeometryIter offsets_begin,
GeometryIter offsets_end )

创建一个输入迭代器,该迭代器根据输入偏移范围为每个元素生成从零开始的顺序几何体 ID。

这可用于任何单级几何体偏移,例如多点、多线串、(多)轨迹。使用自定义迭代器也可以用于嵌套类型。

示例

auto offsets = std::vector<int>({0, 3, 5, 9});
auto iter_first = make_geometry_id_iterator<int>(offsets.begin(), offsets.end());
auto ids = std::vector<int>(10);
std::copy_n(iter_first, 10, ids.begin()); // ids now contains [0, 0, 0, 1, 1, 2, 2, 2, 2, 3]
模板参数
GeometryIter偏移量迭代器类型。必须满足 LegacyRandomAccessIterator 的要求并且可设备访问。
参数
offsets_begin几何体偏移量范围的开始
offsets_end几何体偏移量范围的结束
返回值
一个迭代器,用于遍历由偏移量定义的每个几何体的每个元素的唯一 ID

定义于文件 iterator_factory.cuh380 行。

◆ make_vec_2d_iterator() [1/2]

template<typename FirstIter, typename SecondIter>
auto cuspatial::make_vec_2d_iterator ( FirstIter first,
SecondIter second )

从两个输入迭代器创建一个指向 vec_2d 数据的迭代器。

将来自不同迭代器的 x 和 y 坐标交错到一个指向 xy 坐标的单个迭代器中。

模板参数
向量类型cuSpatial 向量类型,必须是 vec_2d
FirstItervec_2d 第一个组件的迭代器类型。必须满足 LegacyRandomAccessIterator 的要求并且可设备访问。
SecondItervec_2d 第二个组件的迭代器类型。必须满足 LegacyRandomAccessIterator 的要求并且可设备访问。
参数
firstvec_2d::x 开头的迭代器
secondvec_2d::y 开头的迭代器
返回值
指向 vec_2d 的迭代器
前置条件
firstsecond 必须迭代相同的数据类型。

定义于文件 iterator_factory.cuh212 行。

◆ make_vec_2d_iterator() [2/2]

template<typename Iter>
auto cuspatial::make_vec_2d_iterator ( Iter xy_begin)

从单个迭代器创建一个指向 vec_2d 数据的迭代器。

从一个指向交错 x-y 坐标起始范围的迭代器创建一个 vec2d 视图。

模板参数

参数 d_points_begin

返回值

定义于文件 iterator_factory.cuh231 行。

◆ make_vec_2d_output_iterator() [1/2]

template<typename FirstIter, typename SecondIter>
auto cuspatial::make_vec_2d_output_iterator ( FirstIter first,
SecondIter second )

从两个输出迭代器创建一个指向 vec_2d 数据的输出迭代器。

从分别指向 x 和 y 数据的迭代器创建一个输出迭代器,可将交错的 x/y 数据写入其中。这允许将两个独立的输出数据数组用于需要指向结构化数据的迭代器的 API。

模板参数
向量类型cuSpatial 向量类型,必须是 vec_2d
FirstItervec_2d 第一个组件的迭代器类型。必须满足 LegacyRandomAccessIterator 的要求,可变且可设备访问。
SecondItervec_2d 第二个组件的迭代器类型。必须满足 LegacyRandomAccessIterator 的要求,可变且可设备访问。
参数
firstx 数据开头的迭代器。
secondy 数据开头的迭代器。
返回值
指向 vec_2d 的迭代器
前置条件
firstsecond 必须迭代相同的数据类型。

定义于文件 iterator_factory.cuh258 行。

◆ make_vec_2d_output_iterator() [2/2]

template<typename Iter>
auto cuspatial::make_vec_2d_output_iterator ( Iter d_points_begin)

从一个指向交错数组的迭代器创建一个指向 vec_2d 数据的输出迭代器。

模板参数
Iter指向交错数据的迭代器类型。必须满足 [LegacyRandomAccessIterator][LinkLRAI] 的要求,可变且可设备访问。
参数
d_points_begin交错数据开头的迭代器。
返回值
指向 vec_2d 的迭代器

定义于文件 iterator_factory.cuh274 行。