简体   繁体   中英

How move a multipolygon with geopandas in python2

I'm novice in GIS world in python (geopandas, shapely, etc). I need "move" a Multipolygon upwards, but I don't know how to do that.

The Problem

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

output:

As you can see, Islands "Canarias" are away from rest of Spain, I want a smaller figure, and it's takes account that color is important, it's represent income mean for each counties.

If it's helps:

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

Note: Are counties missing, that's why I don't have data for this counties.

My first attempt was try to change coords of polygon for example, I try to find how to do some like this: canarias.coords + (-3,-4) but I didn't find how to access to coords of multipolygon to do that.

I appreciate any help.

PS: Sorry for my English :-/

I think you are looking for shapely.affinity.translate . From the docs:

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  /

For your specific example, you can use:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM