5

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

问题

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()

输出:

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

如果有帮助:

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

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

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

我很感激任何帮助。

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

4

1 回答 1

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  /

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

canarias = spain[spain.ca == "CANARIAS"].geometry
canarias_shift = canarias.apply(lambda x: shapely.affinity.translate(x, xoff=-3, yoff=-4))
于 2016-09-24T01:01:25.433 回答