相关疑难解决方法(0)

具有自定义比较谓词的heapq

我正在尝试使用自定义排序谓词构建堆.由于进入它的值是'用户定义'类型,我无法修改它们的内置比较谓词.

有没有办法做这样的事情:

h = heapq.heapify([...], key=my_lt_pred)
h = heapq.heappush(h, key=my_lt_pred)
Run Code Online (Sandbox Code Playgroud)

或者甚至更好,我可以将heapq函数包装在我自己的容器中,这样我就不需要继续传递谓词了.

python sorting algorithm containers dictionary

61
推荐指数
4
解决办法
5万
查看次数

寻找一种快速查找多边形点的方法属于使用Shapely

我有一组~36,000个多边形,代表该国的一个分区(〜县).我的python脚本收到很多点:pointId,经度,纬度.

对于每个点,我想发回pointId,polygonId.对于每个点,循环到所有多边形并使用myPoint.within(myPolygon)是非常低效的.

我认为匀称库提供了一种更好的方法来准备多边形,以便找到一个点的多边形成为树路径(国家,地区,子区域......)

到目前为止,这是我的代码:

import sys
import os
import json
import time
import string
import uuid

py_id = str(uuid.uuid4())

sys.stderr.write(py_id + '\n')
sys.stderr.write('point_in_polygon.py V131130a.\n')
sys.stderr.flush()

from shapely.geometry import Point
from shapely.geometry import Polygon
import sys
import json
import string
import uuid
import time

jsonpath='.\cantons.json'
jsonfile = json.loads(open(jsonpath).read())

def find(id, obj):
    results = []

    def _find_values(id, obj):
        try:
            for key, value in obj.iteritems():
                if key == id:
                    results.append(value)
                elif not isinstance(value, basestring):
                    _find_values(id, value)
        except AttributeError:
            pass

        try:
            for item in …
Run Code Online (Sandbox Code Playgroud)

python optimization performance graph shapely

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