编辑 正如有人指出的那样,我正在寻找的实际上是最小化所有其他点之间的总测地距离的点
我的地图在地形上类似于吃豆人和小行星的地图.越过顶部会让你翘起到底部,经过左边会让你向右弯曲.
假设我在地图上有两个点(质量相同),我想找到它们的质心.我可以使用经典定义,它基本上是中点.
但是,让我们说这两点是在质量的两端.可以说,还有另一个质心,它是通过"环绕"包裹而形成的.基本上,它是与其他两个点等距的点,但是通过"环绕"边缘来链接.
例
b . O . . a . . O .
Run Code Online (Sandbox Code Playgroud)
两点O.他们的"经典"中点/质心是标记的点a.然而,另一个中点也在b(b通过环绕绕两个点等距离).
在我的情况下,我想选择两点之间平均距离较低的那个.在这种情况下,a具有三个步骤的两个点之间的平均距离. b平均距离为两步.所以我会选择b.
解决两点情况的一种方法是简单地测试经典中点和最短环绕中点,并使用具有较短平均距离的中点.
然而!这不容易推广到3个点,或4个,或5个,或n个点.
有没有我可以用来找到这个的公式或算法?
(假设所有积分将永远是等质量的,我只能用"重心",因为它是我知道松散地描述我试图做的唯一项)
如果我的解释不清楚,我会尝试更好地解释它.
有人能指出我正确的数据结构/算法来完成以下任务吗?
我想结合(Union?)以下两组节点来获得第三组.
谢谢!

我想在Mininet自定义拓扑上设置带宽.
python代码是:
#!/usr/bin/python
from mininet.topo import Topo
from mininet.net import Mininet
from mininet.node import CPULimitedHost
from mininet.link import TCLink
from mininet.util import dumpNodeConnections
from mininet.log import setLogLevel
class MyTopo( Topo ):
"Simple topology example."
def __init__( self, **opts):
"Create custom topo."
# Initialize topology
Topo.__init__( self, **opts )
# Add hosts and switches
h1 = self.addHost('h1')
h2 = self.addHost( 'h2' )
s3 = self.addSwitch( 's3' )
s1 = self.addSwitch( 's1' )
s2 = self.addSwitch( 's2' )
# Add links
self.addLink(h1,s1,bw=10) …Run Code Online (Sandbox Code Playgroud) 这是一个AWS典型的VPC,它由以下组件组成
步骤1,子网1中的实例(私有IP 172.31.0.5)发送数据包到IP 172.31.16.5(子网2中)。
step2,数据包到达路由表,路由表将数据包重定向到目标local。
第三步,一些神奇的事情发生了。
步骤4、instance(172.31.16.5)接收数据包。
我正在尝试重新平衡使用KafkaSpout的Storm拓扑.我的代码是:
TopologyBuilder builder = new TopologyBuilder();
Properties kafkaProps = new Properties();
kafkaProps.put("zk.connect", "localhost:2181");
kafkaProps.put("zk.connectiontimeout.ms", "1000000");
kafkaProps.put("groupid", "storm");
builder.setSpout( "kafkaSpout" , new KafkaSpout(kafkaProps, "test"), 3);
builder.setBolt( "eventBolt", new EventBolt(), 2 ).shuffleGrouping( "kafkaSpout", "eventStream" );
builder.setBolt( "tableBolt", new TableBolt(), 2 ).shuffleGrouping( "kafkaSpout", "tableStream");
Map<String, Object> conf = new HashMap<String, Object>();
conf.put(Config.TOPOLOGY_DEBUG, true);
LocalCluster cluster = new LocalCluster();
cluster.submitTopology("test", conf, builder.createTopology());
Utils.sleep( 1000*5 );
List<TopologySummary> topologySummaries = cluster.getClusterInfo().get_topologies();
for ( TopologySummary summary : topologySummaries ) {
StormTopology topology = cluster.getTopology( summary.get_id() );
RebalanceOptions …Run Code Online (Sandbox Code Playgroud) 我有两个GIS图层-给他们打电话Soils和Parcels-存储为SpatialPolygonsDataFrameS(SPDFS),我想为"叠加"起来,在这里所描述的意义.
叠加操作的结果应该是一个新的SPDF,其中:
该SpatialPolygons组件包含由两个层的交叉形成的多边形.(想想通过在高架投影仪上覆盖两个mylar形成的所有原子多边形).
该data.frame组件记录每个原子多边形落在其中的多边形Soils和Parcels多边形的属性.
我的问题:是否有现成的R功能可以做到这一点?(我甚至会很高兴地了解一个SpatialPolygons正确的组件,计算从两个层的交叉点形成的原子多边形.)我觉得rgeos应该有一个至少做(1)的函数,但它似乎没有......
这个图可能有助于使我更清楚我所追求的内容,然后是创建图中所示的图层Soils和代码的代码Parcels.

library(rgeos)
## Just a utility function to construct the example layers.
flattenSpatialPolygons <- function(SP) {
nm <- deparse(substitute(SP))
AA <- unlist(lapply(SP@polygons, function(X) X@Polygons))
SpatialPolygons(lapply(seq_along(AA),
function(X) Polygons(AA[X], ID=paste0(nm, X))))
}
## Example Soils layer
Soils <-
local({
A <- readWKT("MULTIPOLYGON(((3 .5,7 1,7 2,3 1.5,3 0.5), (3 1.5,7 2,7 …Run Code Online (Sandbox Code Playgroud) 我们有多个来自多个来源的高质量道路网络(Open Street Map,TomTom ......).这些来源包含的信息比我们需要的更多,有效地阻止了我们的计算.过滤二级公路很容易.我们的主要问题是高速公路(两条相反方向的道路)的代表,复杂的公路交叉口(各种出口道路,交叉点不是点).就我们的目的而言,更具"拓扑"风格的道路网络将是理想的.
高度详细的数据来源:
理想的简化网络:

是否有任何算法可以帮助我们提取简化的道路网络?如果.NET中有可用的实现,那将是一个真正的赢家.
更新:
原始数据表示为折线,附加了一些有限的元数据.元数据告知道路的标识(名称或编号),道路的"等级"(高速公路,主要,次要等),以及一些更多细节,如速度限制,线路部分是桥梁还是隧道.数据的质量非常好,我们可以轻松地将折线段组合在一起,根据道路标识一起形成道路.同样,忽略二级公路也很容易.高速公路出口处的加速/减速车道也在其等级中明显标出,因此它们也易于过滤.
我们看到两个主要问题:
1)高速公路:用一条道路替换两条(或多条)单向道路
2)高速公路交叉口:确定交叉点的中心点,并确保我们的简化高速公路与之相连.
更新2: 数据存储在EZRI Shape文件中.使用SharpMap库,它们相对容易解析或进行地理空间搜索.源数据按国家/地区分段,一个国家/地区是一个形状文件(如果国家/地区太大,如美国,德国),则进一步划分为较小的区域.是的,这种划分带来了另一个问题.如何确保法国和德国边境的简化高速公路相遇?
Thanx为关注
在终止风暴拓扑之前如何调用特定方法。
我已经在风暴中创建了一个拓扑,我想在拓扑被杀死之前调用特定的方法。
在Storm框架中是否有任何预定义的替代方法或任何可用的方法来做到这一点。
提前致谢:)
st_intersection与 相比非常慢st_intersects。那么为什么不使用后者而不是前者呢?这是一个带有小型玩具数据集的示例,但对于与实际地理区域边界相交的仅 62,020 个点的实际集合而言,执行时间的差异是巨大的。我有 24Gb 的 RAM 并且st_intersects代码需要几秒钟,而st_intersection代码需要超过 15 分钟(可能更多,我没有耐心等待......)。st_intersection做任何我不喜欢的事情st_intersects吗?
下面的代码处理sfc对象,但我相信对sf对象同样有效。
library(sf)
library(dplyr)
# create square
s <- rbind(c(1, 1), c(10, 1), c(10, 10), c(1, 10), c(1, 1)) %>% list %>% st_polygon %>% st_sfc
# create random points
p <- runif(50, 0, 11) %>% cbind(runif(50, 0, 11)) %>% st_multipoint %>% st_sfc %>% st_cast("POINT")
# intersect points and square with st_intersection
st_intersection(p, s)
# intersect points …Run Code Online (Sandbox Code Playgroud) topology ×10
algorithm ×3
apache-storm ×2
geospatial ×2
java ×2
r ×2
.net ×1
amazon-vpc ×1
apache-kafka ×1
bandwidth ×1
geo ×1
geometry ×1
gis ×1
graph-theory ×1
jts ×1
kill ×1
math ×1
mininet ×1
nodes ×1
python ×1
r-sf ×1
routetable ×1
spatial ×1