标签: r-tree

R*-Tree C实现?

可能重复:需要
C++ R - tree实现

我整个晚上一直在打猎......

任何人都知道基于现代C编译器的R*-Tree实现?

谢谢,陈兹

c implementation r-tree

5
推荐指数
1
解决办法
1715
查看次数

Android SQLite R-Tree - 如何安装模块?

http://www.sqlite.org/rtree.html表示r*树"作为合并的一部分包含在内但默认情况下是禁用的"并且启用它"只需使用SQLITE_ENABLE_RTREE C-preprocessor宏定义编译"

好吧,我想在我的Android应用程序中使用R-trees,但显然SQLite都已预先安装等.有没有办法在用户的手机/设备上启用它?

或者,是否可以使用NDK和SQLite的免费可用源代码?

sqlite android android-ndk r-tree

5
推荐指数
1
解决办法
4599
查看次数

哪种空间数据结构(算法)最适合(搜索)一组区域(空间数据)?

我有一组多边形区域(地理围栏).这组数据是固定的; 所以不需要插入和删除数据.哪个数据结构可用于搜索查询点(经度,纬度)所在的区域?

注意:我已经成功地为一组点实现了KD-Tree(实际上是一个2D树).但它不适用于这个问题.我已经实现了一个R-Tree; 它解决了问题,但它很慢(或我的实施很糟糕).

谢谢

注意:我从事过R-Tree实现,现在工作正常.

c# gis kdtree r-tree

5
推荐指数
1
解决办法
1314
查看次数

Rtrees - 算法的基础知识

我试图了解RTree算法的基础知识,我试图找出它如何执行例如1公里范围内的所有零售商的搜索.我们将把所有对象存储在我们数据库中的矩形中,然后我们会(可能)根据我们当前的位置构建一个查询矩形,然后找到与它重叠的所有矩形.我们然后扫描结果以找到感兴趣的,即只有餐馆的对象?

algorithm r-tree

5
推荐指数
1
解决办法
1942
查看次数

使用SpatialIndex库选择R*Tree的参数

我正在使用来自http://libspatialindex.github.com/的spatialindex库

我在主内存中创建一个R*树:

size_t capacity = 10;
bool bWriteThrough = false;
fileInMem = StorageManager
    ::createNewRandomEvictionsBuffer(*memStorage, capacity, bWriteThrough);

double fillFactor = 0.7;
size_t indexCapacity = 10;
size_t leafCapacity = 10;
size_t dimension = 2;
RTree::RTreeVariant rv = RTree::RV_RSTAR;
tree = RTree::createNewRTree(*fileInMem, fillFactor, indexCapacity,
   leafCapacity, dimension, rv, indexIdentifier);
Run Code Online (Sandbox Code Playgroud)

然后我插入了大量的边界框,目前大约2.5M(德国巴伐利亚州的公路网).后来我的目标是插入欧洲的所有道路.

存储管理器和rtree的参数选择有哪些?大多数情况下,我使用rtree来查找到给定查询(bbox交叉点)最近的道路.

c++ indexing spatial spatial-index r-tree

5
推荐指数
1
解决办法
637
查看次数

持久(基于磁盘)R树(或R*树)

R*Tree如何实现为持久性(基于磁盘)?用于保存R*Tree索引或保存叶值的文件架构是什么?

注意:此外如何在这样的持久R*树中执行插入,更新和删除操作?

注释II:我已经实现了具有批量加载功能的内存中R-Tree.但是,当我们谈论基于磁盘的问题时,我认为这完全无关紧要.

c# java gis geospatial r-tree

5
推荐指数
2
解决办法
2893
查看次数

IComparer问题

我有一个奇怪的问题,我没有线索来追踪原因.我会试着清楚地描述我的问题.

我有一个RTree类,在这个类中,我想比较两个rectanlge(这里我称为信封,它包含minX,minY,maxX,maxY),所以我们有一个比较器类如下:

private class AnonymousXComparerImpl : IComparer
{
    public AnonymousXComparerImpl()
    { }

    public int Compare(object o1, object o2) 
    {
        IEnvelope ea = (IEnvelope)((IBoundable)o1).Bounds;
        IEnvelope eb = (IEnvelope)((IBoundable)o2).Bounds;
        double a = (ea.MinX + ea.MaxX) / 2d;
        double b = (eb.MinX + eb.MaxX) / 2d;
        return a > b ? 1 : a < b ? -1 : 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

使用这个比较器,我们可以维护一个信封的ArrayList并轻松排序,随机添加信封.当我们调用以下代码并且我们遇到了

无法排序,因为IComparer.Compare()方法返回不一致的结果.值不比较等于自身,或者重复一个值与另一个值相比产生不同的结果.

sortedChildBoundables.Sort(new AnonymousXComparerImpl());
Run Code Online (Sandbox Code Playgroud)

这是奇怪的部分.此错误仅发生在未安装VistualStudio的.net 4.0中.如果机器安装了VS或.net 4.5,则此问题无法再次进行再处理.

在这种情况下,我无法弄清楚它为什么会发生.如果你有任何关于解决这类问题的经验,那将是很棒的,我很感激.

谢谢,霍华德

.net c# icomparer r-tree

5
推荐指数
1
解决办法
2298
查看次数

什么是R-Tree的扇动?

我对R-Tree数据结构有疑问.什么是R-Tree中的扇出.它是最大条目数吗?

我们如何确定R-Tree中的最小和最大条目数?如果我有10000点,我的页面大小为8kb.

谢谢

database tree r-tree

5
推荐指数
1
解决办法
5824
查看次数

DBSCAN与R*-Tree - 它是如何工作的

是否有人可以向我解释dbscan算法如何与R*-Tree一起使用?我理解dbscan的工作,似乎我理解为R*-Tree有效,但我无法将它们连接在一起.

最初,我有数据 - 具有8个功能的特征向量,我不明白我如何处理构造R*-Tree.如果有人列出我必须通过的主要步骤,我将不胜感激.

如果我的问题很明显,我会道歉,但这会给我带来困难.提前致谢!

cluster-analysis r-tree dbscan

4
推荐指数
1
解决办法
663
查看次数

可以使用shapely和rtree在大数据集上找到最接近每个点的直线

我有一个简化的城市地图,其中的街道为线串,地址为点。我需要找到从每个点到任何一条街线的最近路径。我有一个执行此操作的脚本,但由于嵌套了循环,因此它在多项式时间内运行。对于15万行(形状为LineString)和10000点(形状为Point),在8 GB Ram计算机上需要10个小时才能完成。

该函数如下所示(抱歉,无法完全重现):

import pandas as pd
import shapely
from shapely import Point, LineString

def connect_nodes_to_closest_edges(edges_df , nodes_df,
                                   edges_geom,
                                   nodes_geom):
    """Finds closest line to points and returns 2 dataframes:
        edges_df
        nodes_df
    """
    for i in range(len(nodes_df)):
        point = nodes_df.loc[i,nodes_geom]
        shortest_distance = 100000
        for j in range(len(edges_df)):
            line = edges_df.loc[j,edges_geom]
            if line.distance(point) < shortest_distance:
                shortest_distance = line.distance(point)
                closest_street_index = j
                closest_line = line
                ...
Run Code Online (Sandbox Code Playgroud)

然后,将结果保存在表中作为新列,该列将点到线的最短路径添加为新列。

有没有一种方法可以使该功能更快些?

例如,如果我可以为50m左右的每个点过滤出线,这将有助于加快每次迭代的速度?

有没有一种方法可以使用rtree包使其更快?我能够找到一个答案,从而使脚本可以更快地找到多边形的交点,但是我似乎无法使它适用于最接近点到线的地方。

多边形相交的更快方法

https://pypi.python.org/pypi/Rtree/

抱歉,如果已经回答了,但是我在这里也没有在gis.stackexchange上找到答案

谢谢你的建议!

python gis r-tree pandas shapely

4
推荐指数
1
解决办法
2275
查看次数