是否有任何开源工具或库(最好是在 python 中)可用于与从 ESRI shapefile 读取的 3D 几何执行大量交集?大多数测试将是简单的线段与多边形。
我研究了 OGR 1.7.1 / GEOS 3.2.0,虽然它正确加载了数据,但结果交叉点不正确,而且大多数其他可用工具似乎都建立在这项工作上。
虽然 CGAL 本来是一个替代方案,但它的许可证并不合适。Boost 通用几何库看起来很棒,但 api 很大,而且似乎不支持 wkt 或 wkb 开箱即用的阅读器。
据丹尼尔说,在他的回答中,没有简单的方法可以修改下面的函数,所以我硬着头皮从头开始。解决方案如下(作为答案)。实际上,请忽略我的回答。参见 Tom Sirgedas 的回答,它要短得多。
我需要修改这里找到的解决方案:根据半径计算从正方形中心到边缘的向量,从矩形中心计算向量,以适用于矩形内的任何点。
这是以前的解决方案,来自链接:
double magnitude;
double abs_cos_angle= fabs(cos(angle));
double abs_sin_angle= fabs(sin(angle));
if (width/2*abs_sin_angle <= height/2*abs_cos_angle)
{
magnitude= width/2/abs_cos_angle;
}
else
{
magnitude= height/2/abs_sin_angle;
}
double check_x= x + cos(angle)*magnitude;
double check_y= y + sin(angle)*magnitude;
Run Code Online (Sandbox Code Playgroud)
check_x 和 check_y 返回矩形边缘上的点,从中心绘制的线将与该点相交。
我上学有一段时间了,所以我盲目地尝试用我感兴趣的点替换 width/2 和 height/2 。不幸的是,这不起作用。
有任何想法吗?
预计到达时间:
如果线在顶部或左侧与矩形相交,则这种盲目修改总是会返回正确的结果。根据起始点所在的象限,当线与右侧或底部相交时,它返回一个太远或太近的点。
我正在使用一个看起来像 Google 日历的应用程序,但有一个主要区别:事件不应与其他事件有交叉。这意味着没有两个事件可以共享相同的时间,即使是分钟粒度。这对于仅存储会议的日历特别有用,因为不可能同时参加两个会议。
就像 Google 日历一样,可以使用重复规则(例如,每个周五和周日上午 10 点到下午 13 点)创建事件。因此,我想仅使用rrules(python-dateutil 模块)来检测重叠事件,而不需要创建 N 个日期时间对象并检查每个对象的交集。
是否可以仅使用 rrules 来检测重叠日期?另一个库中是否已经实现了类似的功能?
python intersection interval-intersection python-datetime python-dateutil
问题是:我有一个元组列表(如果需要,也可以设置)。例如:
a = [(1, 5), (4, 2), (4, 3), (5, 4), (6, 3), (7, 6)]
Run Code Online (Sandbox Code Playgroud)
我想找到的是一个列表
r = [(1, 5, 4, 2, 3, 6, 7)]
Run Code Online (Sandbox Code Playgroud)
因为一旦所有集合放在一起,交集就不是空的。
例如
a = [(1, 5), (4, 2), (4, 3), (5, 4), (6, 3), (7, 6), (8, 9)]
Run Code Online (Sandbox Code Playgroud)
结果应该是
r = [(1, 5, 4, 2, 3, 6, 7), (8, 9)]
Run Code Online (Sandbox Code Playgroud)
希望问题很清楚。那么在python中最优雅的方法是什么,如果有的话?
干杯
例如,我有两组数组
arr1 = [
{
myName: 'Adam',
mySkill: 'CSS',
},
{
myName: 'Mutalib',
mySkill: 'JavaScript',
},
];
arr2 = [
{
myName: 'Adam',
myWeight: '112',
},
{
myName: 'Habib',
myWeight: '221',
},
];
Run Code Online (Sandbox Code Playgroud)
我尝试比较它们,并选择myName与 lodash 的intersectionWith函数相同的值。但一直无法做到
newList.push(intersectionWith(arr1.arr2,isEqual]));
Run Code Online (Sandbox Code Playgroud)
*在这种情况下,结果intersectionWith(arr1.arr2,isEqual])应该是Adam
关于我应该如何进一步进行的任何建议、解决方案和想法?
另外,以前我forEach在另一个中使用两个来实现这一目标......除非这是我可以对这种排序做的最好的方法?
给定数组 X 和 Y(最好都作为输入,否则,一个作为输入,另一个硬编码),如何使用 jq 输出包含两者共有的所有元素的数组?例如,f 的值是多少,使得
echo '[1,2,3,4]' | jq 'f([2,4,6,8,10])'
Run Code Online (Sandbox Code Playgroud)
会输出
[2,4]
Run Code Online (Sandbox Code Playgroud)
?
我尝试了以下方法:
map(select(in([2,4,6,8,10]))) --> outputs [1,2,3,4]
select(map(in([2,4,6,8,10]))) --> outputs [1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud) 我有一个带有一系列线条的图像,如下所示:
我想知道是否有某种方法可以找到所有线的交点。
我正在检查另一个帖子,他们提供了一种找到交叉点的方法,但是一旦图像被分割,我想它有噪音或类似的东西......我将从一个简单的图像开始找到每个交叉点。
我的主要想法是解决“方程组”,但我认为对于具有许多交点的图像来说太难了,我不知道是否有任何方法可以找到所有交点。
我需要以 AX+BY+CZ+D=0 的形式计算两个平面的交点,并以两个 (x,y,z) 点的形式得到一条线。我知道如何进行数学计算,但我想避免发明自行车并使用有效且经过测试的东西。是否有任何库已经实现了这一点?试图搜索 opencv 和 google,但没有成功。
当 optional 和 required 属性通过交集合并时, required 获胜
type A = { who: string }
type B = { who?: string }
// $ExpectType {who:string}
type R = A & B
Run Code Online (Sandbox Code Playgroud)
这可能会导致运行时错误,例如,在处理函数中的默认参数模式时
type Params = {
who: string
greeting: string
}
const defaults: Params = {
greeting: 'Hello',
who: 'Johny 5',
}
function greeting(params: Partial<Params>){
// $ExpectType Params
const merged = {...defaults, ...params}
return `${merged.greeting.toUpperCase()} ${merged.who} !`
}
// @throws - TypeError: Cannot read property 'toUpperCase' of undefined
greeting({greeting:undefined, who: 'Chuck'}) …Run Code Online (Sandbox Code Playgroud) 假设我有两个多边形,它们的名称和坐标是(在 Python 中):
p:[(1,1),(2,2),(4,2),(3,1)]
q:[(1.5,2),(3,5),(5,4),(3.5,1)]
Run Code Online (Sandbox Code Playgroud)
在我们人脑中,很容易知道这两个多边形相交并计算相交区域坐标,但我想让我们的机器知道如何计算相交区域的坐标。基本上,我想知道这项工作是否有一个简单明了的算法,如果已经有一个Python库可以做到这一点,那就完美了。
intersection ×10
python ×5
arrays ×2
geometry ×2
.net ×1
2d ×1
curves ×1
graph-theory ×1
javascript ×1
jq ×1
json ×1
lodash ×1
mapped-types ×1
math ×1
matlab ×1
plane ×1
set ×1
shapefile ×1
sorting ×1
typescript ×1
unions ×1
vector ×1