如何在python2中使用geopandas移动多边形

mmn*_*eco 5 python python-2.7 shapely geopandas

我是 Python GIS 世界的新手(geopandas、shapely 等)。我需要向上“移动”一个 Multipolygon,但我不知道该怎么做。

问题

import pandas as pd
import numpy as np
import matplotlib
from matplotlib import pyplot as plt
import seaborn as sns
import pysal as ps
from pysal.contrib.viz import mapping as maps    
import geopandas as gpd

fs = 5
nums = ("renta", 1)

f, ax = plt.subplots(1, figsize=(fs,fs))

spain.plot(column="XBAR", ax=ax, linewidth=0.05, cmap="OrRd", scheme="unique_values")
ax.set_axis_off()

plt.title("RENTA MEDIA", fontsize=20)
plt.tight_layout()

plt.savefig("../imgs/map_%s_%s.svg" % nums, bbox_iches="tight", dpi=2800)
plt.show()
Run Code Online (Sandbox Code Playgroud)

输出:

如您所见,“加那利群岛”远离西班牙其他地区,我想要一个较小的数字,并且考虑到颜色很重要,它代表了每个县的收入平均值。

如果有帮助:

canarias = spain[spain.ca == "CANARIAS"]["geometry"]
print canarias
print canarias.type

13    (POLYGON ((-17.92791748046875 27.8495826721191...
Name: geometry, dtype: object
13    MultiPolygon
dtype: object
Run Code Online (Sandbox Code Playgroud)

注意:是否缺少县,这就是为什么我没有这些县的数据。

我的第一次尝试是尝试更改多边形的坐标,例如,我尝试找到如何做这样的事情:canarias.coords + (-3,-4) 但我没有找到如何访问多多边形的坐标来做那。

我很感激任何帮助。

PS:对不起我的英语:-/

jdm*_*cbr 9

我想你正在寻找shapely.affinity.translate。从文档:

Signature: shapely.affinity.translate(geom, xoff=0.0, yoff=0.0, zoff=0.0)
Docstring:
Returns a translated geometry shifted by offsets along each dimension.

The general 3D affine transformation matrix for translation is:

/ 1  0  0 xoff \ 
| 0  1  0 yoff |
| 0  0  1 zoff |
\ 0  0  0   1  /
Run Code Online (Sandbox Code Playgroud)

对于您的具体示例,您可以使用:

canarias = spain[spain.ca == "CANARIAS"].geometry
canarias_shift = canarias.apply(lambda x: shapely.affinity.translate(x, xoff=-3, yoff=-4))
Run Code Online (Sandbox Code Playgroud)