小编Rah*_*hul的帖子

安装GDAL时出错

我正在尝试通过pip安装GDAL.但是我收到了这个错误:

extensions/gdal_wrap.cpp:3089:27: fatal error: cpl_vsi_error.h: No such     file or directory
 #include "cpl_vsi_error.h"
                           ^
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
Run Code Online (Sandbox Code Playgroud)

我使用了这些命令:

sudo apt-get install libgdal-dev
export CPLUS_INCLUDE_PATH=/usr/include/gdal
export C_INCLUDE_PATH=/usr/include/gdal
pip install GDAL
Run Code Online (Sandbox Code Playgroud)

谁能告诉我如何安装它?

python pip gdal

25
推荐指数
3
解决办法
2万
查看次数

如何重新安排在scrapy中稍后要抓取​​的403 HTTP状态代码?

根据这些说明,我可以看到HTTP 500错误,连接丢失错误等总是被重新安排,但是如果403错误被重新安排,或者它们被简单地视为有效响应或在达到重试限制后被忽略,我找不到任何地方.

同样来自同一指令:

一旦蜘蛛完成了对所有常规(非失败)页面的爬行,在抓取过程中收集失败的页面并在结束时重新安排.一旦没有更多失败的页面重试,该中间件就会发送一个信号(retry_complete),因此其他扩展可以连接到该信号.

这些Failed Pages是指什么?它们包含403错误吗?

此外,当scrapy遇到HTTP 400状态时,我可以看到引发此异常:

2015-12-07 12:33:42 [scrapy] DEBUG: Ignoring response <400 http://example.com/q?x=12>: HTTP status code is not handled or not allowed
Run Code Online (Sandbox Code Playgroud)

从这个例外情况来看,我认为很明显HTTP 400响应被忽略而不是重新安排.

我不确定403 HTTP状态是否被忽略或重新安排在最后被抓取.所以我尝试根据这些文档重新安排具有HTTP状态403的所有响应.这是我到目前为止所尝试的:

在middlewares.py文件中:

def process_response(self, request, response, spider):
    if response.status == 403:
        return request
    else:
        return response
Run Code Online (Sandbox Code Playgroud)

在settings.py中:

RETRY_TIMES = 5
RETRY_HTTP_CODES = [500, 502, 503, 504, 400, 403, 404, 408]
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 这些Failed Pages是指什么?它们包含403错误吗?
  2. 我是否需要写入process_response重新安排403错误页面,还是通过scrapy自动重新安排?
  3. 什么类型的异常和(HTTP代码)由scrapy重新安排?
  4. 如果我重新安排404错误页面,我是否会进入无限循环或是否有超时,之后重新安排将不会进一步完成?

python scrapy web-scraping

8
推荐指数
1
解决办法
3306
查看次数

如何从多边形中提取多边形?

我试图从多边形中提取多边形的形状.我可以使用MultiPolygon从形状上将多边形列表转换为多边形.

>>> Multi = MultiPolygon([shape(pol['geometry']) for pol in fiona.open('data.shp')]) 
Run Code Online (Sandbox Code Playgroud)

和,

>>> Multi.wkt
'MULTIPOLYGON (((249744.2315302934148349 142798.1643468967231456, 250113.7910872535139788 142132.9571443685272243, 250062.6213024436729029 141973.7622582934272941, 249607.7787708004761953 141757.7120557629095856, 249367.7742475979903247 142304.6840291862317827, 249367.7742475979903247 142304.6840291862317827, 249744.2315302934148349 142798.1643468967231456)), 
               ((249175.7899173096520826 142292.5352640640921891, 249367.7742475979903247 142304.6840291862317827, 249607.7787708004761953 141757.7120557629095856, 249014.4539607730694115 141876.1348429077770561, 249175.7899173096520826 142292.5352640640921891)))'
Run Code Online (Sandbox Code Playgroud)

有谁知道如何反转过程,即给定多面,我如何将其转换为单独的多边形?

python shapely

8
推荐指数
3
解决办法
8459
查看次数

如何使用pyscopg2的异步功能?

我正在尝试使用不同的表执行 3 个不同的 postgresql 查询。每个查询需要 2 秒来执行。我想知道是否可以同时运行所有 3 个查询,以便我可以节省 4 秒。我尝试使用的异步功能,pyscopg2但它只返回上次查询的结果。谁能指出我做错了什么?

import select
import psycopg2
import psycopg2.extensions

def wait(conn):
    while 1:
        state = conn.poll()
        if state == psycopg2.extensions.POLL_OK:
            break
        elif state == psycopg2.extensions.POLL_WRITE:
            select.select([], [conn.fileno()], [])
        elif state == psycopg2.extensions.POLL_READ:
            select.select([conn.fileno()], [], [])
        else:
            raise psycopg2.OperationalError("poll() returned %s" % state)


aconn = psycopg2.connect(
  dbname=pg_name,
  user=pg_username,
  host=pg_host,
  password=pg_password,
  async=1)

wait(aconn)
acurs = aconn.cursor()

acurs.execute(
              "SELECT 1;"
              "SELECT ST_Length(ST_GeomFromText"
              "('LINESTRING(743238 2967416,743238 2967450)',4326));"
              "SELECT 3;"
             )
wait(acurs.connection)
result = acurs.fetchall()
print …
Run Code Online (Sandbox Code Playgroud)

postgresql asynchronous postgis psycopg2

6
推荐指数
1
解决办法
5652
查看次数

如何在scrapy中提出请求之前更改请求网址?

我需要在下载响应之前修改我的请求URL.但我无法改变它.即使在使用修改请求URL request.replace(url=new_url),则process_response打印该未改性的网址.这是中间件的代码:

def process_request(self, request, spider):
    original_url = request.url
    new_url= original_url + "hello%20world"
    print request.url            # This prints the original request url
    request=request.replace(url=new_url)
    print request.url            # This prints the modified url

def process_response(self, request, response, spider):
    print request.url            # This prints the original request url
    print response.url           # This prints the original request url
    return response
Run Code Online (Sandbox Code Playgroud)

谁能告诉我我在这里缺少什么?

python request scrapy

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

错误:数组大小超过允许的最大值(1073741823)

我试图解散多边形表的边界,这些多边形是ST_Buffers,半径为5km,并将它们转储到另一个表中.第一个表包含大约1000万个多边形.包含多边形的表是:

CREATE TABLE poly_5km(gid serial PRIMARY KEY, bufferType varchar, the_geog geography(POLYGON,4326) );
Run Code Online (Sandbox Code Playgroud)

这是我要创建的表:

CREATE TABLE buffer_5km(gid serial PRIMARY KEY, bufferType varchar, the_geog geography(POLYGON,4326) );

INSERT INTO buffer_5km(gid,bufferType,the_geog) VALUES (1,'test',(SELECT (ST_Dump(ST_Multi(ST_Union(ST_MakeValid(poly_5km.the_geog::geometry))))).geom::geography FROM poly_5km WHERE poly_5km.bufferType= 'test'));
Run Code Online (Sandbox Code Playgroud)

但每当我运行insert语句时,我都会收到此错误:

ERROR:  array size exceeds the maximum allowed (1073741823)
Run Code Online (Sandbox Code Playgroud)

谁能告诉我我做错了什么?

postgresql performance postgis

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

例外:版本不匹配:cffi

我正在尝试使用scrapy安装

pip install Scrapy
Run Code Online (Sandbox Code Playgroud)

但是我收到了这个错误:

    Exception: Version mismatch: this is the 'cffi' package version 1.10.0, located in '/usr/local/lib/python2.7/dist-packages/cffi/api.pyc'.
    When we import the top-level '_cffi_backend' extension module, we get version 1.5.2, located in '/usr/lib/python2.7/dist-packages/_cffi_backend.x86_64-linux-gnu.so'.  
    The two versions should be equal; check your installation.
Run Code Online (Sandbox Code Playgroud)

尝试安装依赖项:

sudo apt-get install build-essential libssl-dev libffi-dev python-dev
Run Code Online (Sandbox Code Playgroud)

还是一样的错误.

任何人都可以告诉我我错过了什么?

我在ubuntu 16.04上

python ubuntu pip scrapy ubuntu-16.04

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

如何在集合级别的pymongo中添加wiredTiger?

我正在尝试使用wiredTiger引擎在MongoDB 3.0中启用数据压缩.压缩在服务器级别工作正常,我可以为mongo服务器配置文件中的所有集合提供全局压缩算法,如下所示:

storage:
  engine: wiredTiger
  wiredTiger:
    collectionConfig:
      blockCompressor: zlib
Run Code Online (Sandbox Code Playgroud)

我想在集合级别启用此压缩,这可以通过使用mongodb shell中的以下代码来完成:

db.createCollection( "test", {storageEngine:{wiredTiger:{configString:'block_compressor=zlib'}}} );
Run Code Online (Sandbox Code Playgroud)

如何使用pymongo驱动程序执行此操作?

from pymongo import MongoClient
client = MongoClient("localhost:27017")
db = client.mydb
Run Code Online (Sandbox Code Playgroud)

python zlib mongodb pymongo wiredtiger

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

如何在json中转储压缩字符串?

我正在使用一个字符串zlib,将其存储在字典中并创建字典的md5哈希值.但是我收到了错误:

UnicodeDecodeError: 'utf8' codec can't decode byte 0x9c in position 1: invalid start byte
Run Code Online (Sandbox Code Playgroud)

代码是:

data['extras'] = zlib.compress("My string".encode("utf-8"))  //The string is very large that\'s why it\'s needed to be compressed to save up memory 
checkup['hash'] = hashlib.md5(json.dumps(dict(data), sort_keys=True)).hexdigest()
Run Code Online (Sandbox Code Playgroud)

字典是这样的:

{'extras':'x\x9cK\x04\x00\x00b\x00b'}
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我如何在JSON中转储这个字典/字符串?

这个字符串是一个长json.就像是:

{
    "listing": {
            "policies": null,
            "policy_explanation": "Some Text",
            "policy_name": "Flexi3",
            "updated": "7 weeks ago",
            "city": "Bengaluru",
            "country": "India",
             .
             .
             .   
}
Run Code Online (Sandbox Code Playgroud)

python compression json dictionary zlib

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

如何使用PyTorch多处理?

我正在尝试使用python的multiprocessing Pool方法pytorch来处理图像。这是代码:

from multiprocessing import Process, Pool
from torch.autograd import Variable
import numpy as np
from scipy.ndimage import zoom

def get_pred(args):

  img = args[0]
  scale = args[1]
  scales = args[2]
  img_scale = zoom(img.numpy(),
                     (1., 1., scale, scale),
                     order=1,
                     prefilter=False,
                     mode='nearest')

  # feed input data
  input_img = Variable(torch.from_numpy(img_scale),
                     volatile=True).cuda()
  return input_img

scales = [1,2,3,4,5]
scale_list = []
for scale in scales: 
    scale_list.append([img,scale,scales])
multi_pool = Pool(processes=5)
predictions = multi_pool.map(get_pred,scale_list)
multi_pool.close() 
multi_pool.join()
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

`RuntimeError: Cannot re-initialize CUDA in forked subprocess. …
Run Code Online (Sandbox Code Playgroud)

python multiprocessing computer-vision pytorch

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