小编Ror*_*ory的帖子

从Leaflet中的GeoJSON文件显示多边形的标记

我有一个传单JS地图,显示GeoJSON文件中的数据.然而,geojson中的一些特征是多边形,有些是点.我想用一个点替换每个多边形(在质心中,在bbox的平均值中,无论如何,无关紧要,准确性并不重要),这样我就可以"指出 - 整个" geojson文件,只显示每个点的一个传单标记,或者那个被转换为点的多边形.我不想显示多边形的轮廓.

javascript json geojson web leaflet

3
推荐指数
1
解决办法
3674
查看次数

为什么 shapely/geos 可以解析这个“无效”的众所周知的二进制文件?

我正在尝试解析众所周知的二进制,这是地理信息系统(GIS)中使用的几何对象的二进制编码。我正在使用ESRI 的此规范(与 esri 的结果相同)。我有来自Osmosis的输入数据,这是一个解析 OpenStreetMap 数据的工具,特别是pgsimp-dump 格式,它给出了二进制文件的十六进制表示。

ESRI 文档说 a 应该只有 21 个字节Point,字节顺序为 1 个字节,typeid 为 uint32 为 4 个字节,double x 为 8 个字节,double y 为 8 个字节。

渗透的一个示例是这个(十六进制)示例:0101000020E6100000DB81DF2B5F7822C0DFBB7262B4744A40,其长度为 25 个字节。

Shapely是一个解析 WKB(等)的 python 程序,它基于流行的 C 库GEOS 能够解析这个字符串:

>>> import shapely.wkb
>>> shapely.wkb.loads("0101000020E6100000DB81DF2B5F7822C0DFBB7262B4744A40", hex=True)
<shapely.geometry.point.Point object at 0x7f221f2581d0>
Run Code Online (Sandbox Code Playgroud)

当我要求 Shapely 解析然后转换为 WKB 时,我得到 21 个字节。

>>> shapely.wkb.loads("0101000020E6100000DB81DF2B5F7822C0DFBB7262B4744A40", hex=True).wkb.encode("hex").upper()
'0101000000DB81DF2B5F7822C0DFBB7262B4744A40'
Run Code Online (Sandbox Code Playgroud)

区别在于中间的 4 个字节,对于 typeif=d 来说,在 …

gis specifications geospatial geos shapely

3
推荐指数
1
解决办法
3041
查看次数

具有通用特征的结构,这也是通用特征

在 Rust 1.15 中,我创建了一个特征来抽象读取和解析文件格式。我正在尝试创建一个内部具有此通用特征的结构。

我有这个特点:

use std::io::Read;

trait MyReader<R: Read> {
    fn new(R) -> Self;
    fn into_inner(self) -> R;

    fn get_next(&mut self) -> Option<u32>;
    fn do_thingie(&mut self);
}
Run Code Online (Sandbox Code Playgroud)

我想创建一个结构,它引用了实现这个的东西。

struct MyIterThing<'a, T: MyReader<R>+'a> {
    inner: &'a mut T,
}
Run Code Online (Sandbox Code Playgroud)

给出以下错误:

use std::io::Read;

trait MyReader<R: Read> {
    fn new(R) -> Self;
    fn into_inner(self) -> R;

    fn get_next(&mut self) -> Option<u32>;
    fn do_thingie(&mut self);
}
Run Code Online (Sandbox Code Playgroud)

T: MyReader+'a, 我收到错误: "error[E0243]: wrong number of type arguments: expected 1, found 0",T: MyReader<R: …

traits rust

3
推荐指数
1
解决办法
1128
查看次数

用于计算间隔的工具/库,例如"每月的最后一个星期四"

我正在寻找一个命令行工具或某种python库(我可以将其包装),以便我可以计算指定的日期,如"每月的最后一个星期四".

即我想让人们像上面那样输入人类友好的文本,并且它应该能够计算任何月/年的任何日期/任何满足该条件的日期.

有什么建议?

python datetime date

2
推荐指数
1
解决办法
1096
查看次数

XSLT - 匹配其中包含某个节点的节点(如jQuery":has")

假设我有以下XML文件

<a id="123">
   <b type="foo" value="1" />
   <b type="baz" value="1" />
</a>
<a id="789">
  <b type="bar" value="12" />
</a>
<a id="999">
   <b type="foo", value="2" />
</a>
Run Code Online (Sandbox Code Playgroud)

我想获得所有'a'节点的列表,这些节点具有'b'子节点,其type ="foo"和value ="1".您可以使用":has"选择器在jQuery中执行类似的操作.

为了记录,我打算在命令行上使用xmlstarlet(但我并没有这样做),所以以这种方式工作的xslt将是最好的.

xml xslt xpath

2
推荐指数
1
解决办法
505
查看次数

如果没有获得锁定,为什么bash的flock没有超时退出?

我正在使用flock一个用于文件锁定的bash命令来防止两个不同的代码实例运行多次.

我正在使用此测试代码:

( ( flock -x 200 ;  sleep 10 ; echo "original finished" ; ) 200>./test.lock ) &
( sleep 2 ; ( flock -x -w 2 200 ; echo "a finished" ) 200>./test.lock ) &
Run Code Online (Sandbox Code Playgroud)

我正在运行2个子壳(背景).该(flock NUM; ...) NUM>FILE语法是从flock的人页面.

我希望第一个子shell将获得test.lock的独占锁,然后等待10秒,然后打印"原始完成",一直持有锁.第二个子shell将在或多或少同时启动,等待2秒,然后尝试锁定test.lock,但在2秒后超时.如果它获得锁定,那么它将打印"完成".如果它没有锁定,则该子shell应该停止,并且不应打印任何内容.

由于第一个子shell等待的时间较长,因此它将保持锁定10秒,因此第二个子shell不应该获得锁定,并且不应该完成.即应该看到"原始完成"打印而不是两者.

实际发生的是打印"完成",然后打印"原始完成".

这意味着第二个子shell是(a)不使用与第一个子shell相同的锁,或者(b)它无法获得锁,但继续执行或(c)其他.

为什么这些锁不像我期望的那样工作?

unix linux bash flock

2
推荐指数
1
解决办法
3258
查看次数

给定地球上2个闭合点的纬度/经度(<10m),如何计算以米为单位的距离?

我在地球上有2点的纬度/经度.他们非常接近,<10米.让我们假设地球是平坦的.如何以米为单位计算它们之间的距离?

我知道可以正确执行此操作的工具(PostGIS等),但是我只是做一个粗略的准备好的类型,而且我的确很准确.如此小的尺寸,1%的差异只有10厘米,这对我来说很好.我在库存python中这样做.我对标准欧几里德距离的事物很好.

algorithm geometry distance geospatial

2
推荐指数
1
解决办法
537
查看次数

Python - 导入 global/site-packages 模块而不是本地目录中的同名文件

我正在使用 python 和 virtualenv/pip。我有一个通过 pip 安装的模块test_utils(它是 django-test-utils)。在我的一个 django 应用程序中,我想导入该模块。但是,我test_utils.py在同一目录中还有另一个文件。如果我去import test_utils,那么它会导入这个本地文件。

是否可以让 python 使用非本地/非相对/全局导入?我想我可以重命名 my test_utils.py,但我很好奇。

python django import python-module

2
推荐指数
1
解决办法
3224
查看次数

Spatialite的Distance()函数返回什么单位?

Spatialite能够使用Distance()函数计算2个几何之间的距离.还有其他功能可用于LINESTRING.但是我找不到它返回的单位.是米吗?如果我有2个点,如何在空间查询中计算它们之间的距离?

(对于记录我使用SRID 4326,即WSG 86,即旧的传统纬度和经度).

sqlite gis distance spatialite

2
推荐指数
1
解决办法
2608
查看次数

不能使用Rayon的`.par_iter()`

我有一个实现的结构,Iterator它作为迭代器工作正常.它产生值,并使用.map(),我从本地HTTP服务器下载每个项目并保存结果.我现在想要并行化这个操作,Rayon看起来很友好.

尝试按照文档中的示例时,我收到编译器错误.

这是按顺序工作的代码.generate_values返回实现的结构Iterator.dl下载值并保存它们(即它有副作用).由于迭代器在Rust中是懒惰的,所以我.count()最后放了一个它以便它实际运行它.

generate_values(14).map(|x| { dl(x, &path, &upstream_url); }).count();
Run Code Online (Sandbox Code Playgroud)

按照人造丝的例子,我尝试了这个:

generate_values(14).par_iter().map(|x| { dl(x, &path, &upstream_url); }).count();
Run Code Online (Sandbox Code Playgroud)

并得到以下错误:

src/main.rs:69:27: 69:37 error: no method named `par_iter` found for type `MyIterator` in the current scope
Run Code Online (Sandbox Code Playgroud)

有趣的是,当我使用.iter(),许多Rust的东西使用时,我得到一个类似的错误:

src/main.rs:69:27: 69:33 error: no method named `iter` found for type `MyIterator` in the current scope
src/main.rs:69     generate_values(14).iter().map(|tile| { dl_tile(tile, &tc_path, &upstream_url); }).count();
Run Code Online (Sandbox Code Playgroud)

自从我实施以来Iterator,我应该.iter()免费获得权利吗?这是为什么.par_iter()不起作用?

Rust 1.6和Rayon …

parallel-processing iterator rust rayon

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