在Cartopy上绘制匀称的多边形

时间:2019-06-04 17:43:55

标签: python matplotlib shapely cartopy

我正在寻找在Cartopy地图上绘制一个形状多边形的图。我浏览了Cartopy和整齐的文档,也查看了StackOverflow上的各种解决方案,但似乎没有任何效果,我不确定为什么。

这是我所拥有的:

from shapely.geometry.polygon import Polygon
import cartopy.crs as ccrs
import cartopy.feature as cfeature
import matplotlib.pyplot as plt

# make the map
bounds = [(-122., -72., 25., 50.)]
plt.figure(figsize=(5, 3))
ax = plt.axes(projection=ccrs.LambertConformal())
ax.set_extent(*bounds, crs=ccrs.PlateCarree())
ax.add_feature(cfeature.COASTLINE.with_scale('50m'), linewidth=0.75)
ax.add_feature(cfeature.STATES, linewidth=0.5)

# add in the polygon
ax.add_geometries([polygon], crs=ccrs.PlateCarree(), facecolor = 'b', edgecolor='black', alpha=0.5)

使用当前代码,我得到的只是美国的空白图片。我在想: 1)投影错误,而是将多边形放置在其他位置,或者2)多边形正确地放置在地图上,并且由于未设置ax.add_geometry属性而没有显示正确地

对于以上情况,polygon是以下内容:

polygon = Polygon[(-6719446.159777582, 8747162.244957967),
 (-6714522.73594268, 8747162.244957967),
 (-6714522.73594268, 8742238.821123065),
 (-6704675.888272878, 8742238.821123065),
 (-6704675.888272878, 8737315.397288164),
 (-6689905.616768174, 8737315.397288164),
 (-6689905.616768174, 8732391.973453263),
 (-6684982.1929332735, 8732391.973453263),
 (-6684982.1929332735, 8727468.549618362),
 (-6675135.345263471, 8727468.549618362),
 (-6675135.345263471, 8722545.125783462),
 (-6665288.497593668, 8722545.125783462),
 (-6665288.497593668, 8717621.70194856),
 (-6660365.073758768, 8717621.70194856),
 (-6660365.073758768, 8712698.27811366),
 (-6655441.649923867, 8712698.27811366),
 (-6655441.649923867, 8717621.70194856),
 (-6650518.226088965, 8717621.70194856),
 (-6650518.226088965, 8707774.854278758),
 (-6640671.378419163, 8707774.854278758),
 (-6640671.378419163, 8702851.430443857),
 (-6625901.106914459, 8702851.430443857),
 (-6625901.106914459, 8693004.582774054),
 (-6611130.835409755, 8693004.582774054),
 (-6611130.835409755, 8688081.158939153),
 (-6606207.411574854, 8688081.158939153),
 (-6606207.411574854, 8678234.31126935),
 (-6601283.987739952, 8678234.31126935),
 (-6601283.987739952, 8673310.887434449),
 (-6591437.140070151, 8673310.887434449),
 (-6591437.140070151, 8663464.039764646),
 (-6586513.716235249, 8663464.039764646),
 (-6586513.716235249, 8653617.192094844),
 (-6576666.868565448, 8653617.192094844),
 (-6576666.868565448, 8648693.768259943),
 (-6571743.444730546, 8648693.768259943),
 (-6571743.444730546, 8638846.92059014),
 (-6561896.597060744, 8638846.92059014),
 (-6561896.597060744, 8633923.496755239),
 (-6556973.173225842, 8633923.496755239),
 (-6556973.173225842, 8624076.649085436),
 (-6552049.749390941, 8624076.649085436),
 (-6552049.749390941, 8619153.225250535),
 (-6547126.32555604, 8619153.225250535),
 (-6547126.32555604, 8614229.801415635),
 (-6542202.9017211385, 8614229.801415635),
 (-6542202.9017211385, 8609306.377580734),
 (-6537279.477886237, 8609306.377580734),
 (-6537279.477886237, 8599459.529910931),
 (-6527432.630216435, 8599459.529910931),
 (-6527432.630216435, 8589612.682241129),
 (-6522509.206381533, 8589612.682241129),
 (-6522509.206381533, 8584689.258406227),
 (-6512662.358711731, 8584689.258406227),
 (-6512662.358711731, 8574842.410736425),
 (-6507738.93487683, 8574842.410736425),
 (-6507738.93487683, 8569918.986901524),
 (-6502815.511041929, 8569918.986901524),
 (-6502815.511041929, 8564995.563066622),
 (-6497892.087207028, 8564995.563066622),
 (-6497892.087207028, 8560072.139231721),
 (-6492968.663372126, 8560072.139231721),
 (-6492968.663372126, 8550225.29156192),
 (-6488045.239537226, 8550225.29156192),
 (-6488045.239537226, 8545301.867727019),
 (-6483121.815702325, 8545301.867727019),
 (-6483121.815702325, 8540378.443892118),
 (-6478198.391867423, 8540378.443892118),
 (-6478198.391867423, 8535455.020057216),
 (-6473274.968032522, 8535455.020057216),
 (-6473274.968032522, 8525608.172387414),
 (-6468351.544197621, 8525608.172387414),
 (-6468351.544197621, 8520684.748552512),
 (-6463428.1203627195, 8520684.748552512),
 (-6463428.1203627195, 8510837.90088271),
 (-6458504.696527818, 8510837.90088271),
 (-6458504.696527818, 8500991.053212907),
 (-6453581.272692917, 8500991.053212907),
 (-6453581.272692917, 8496067.629378006),
 (-6448657.848858016, 8496067.629378006),
 (-6448657.848858016, 8486220.781708203),
 (-6443734.425023114, 8486220.781708203),
 (-6443734.425023114, 8476373.9340384),
 (-6438811.001188213, 8476373.9340384),
 (-6438811.001188213, 8471450.5102035),
 (-6433887.577353312, 8471450.5102035),
 (-6433887.577353312, 8461603.662533697),
 (-6428964.15351841, 8461603.662533697),
 (-6428964.15351841, 8451756.814863894),
 (-6424040.72968351, 8451756.814863894),
 (-6424040.72968351, 8446833.391028993),
 (-6419117.305848609, 8446833.391028993),
 (-6419117.305848609, 8436986.543359192),
 (-6414193.882013707, 8436986.543359192),
 (-6414193.882013707, 8427139.69568939),
 (-6409270.458178806, 8427139.69568939),
 (-6409270.458178806, 8422216.271854488),
 (-6404347.034343905, 8422216.271854488),
 (-6404347.034343905, 8412369.424184686),
 (-6399423.610509004, 8412369.424184686),
 (-6399423.610509004, 8402522.576514883),
 (-6394500.186674103, 8402522.576514883),
 (-6394500.186674103, 8392675.72884508),
 (-6389576.762839202, 8392675.72884508),
 (-6389576.762839202, 8387752.305010179),
 (-6379729.915169399, 8387752.305010179),
 (-6379729.915169399, 8377905.457340376),
 (-6374806.491334498, 8377905.457340376),
 (-6374806.491334498, 8372982.033505476),
 (-6369883.067499597, 8372982.033505476),
 (-6369883.067499597, 8363135.1858356735),
 (-6364959.643664695, 8363135.1858356735),
 (-6364959.643664695, 8343441.490496069),
 (-6369883.067499597, 8343441.490496069),
 (-6369883.067499597, 8333594.642826267),
 (-6374806.491334498, 8333594.642826267),
 (-6374806.491334498, 8323747.795156464),
 (-6379729.915169399, 8323747.795156464),
 (-6379729.915169399, 8318824.371321563),
 (-6384653.339004301, 8318824.371321563),
 (-6384653.339004301, 8308977.52365176),
 (-6389576.762839202, 8308977.52365176),
 (-6389576.762839202, 8304054.099816859),
 (-6394500.186674103, 8304054.099816859),
 (-6399423.610509004, 8304054.099816859),
 (-6399423.610509004, 8299130.675981957),
 (-6404347.034343905, 8299130.675981957),
 (-6409270.458178806, 8299130.675981957),
 (-6409270.458178806, 8294207.252147056),
 (-6414193.882013707, 8294207.252147056),
 (-6414193.882013707, 8289283.828312156),
 (-6419117.305848609, 8289283.828312156),
 (-6424040.72968351, 8289283.828312156),
 (-6424040.72968351, 8284360.4044772545),
 (-6428964.15351841, 8284360.4044772545),
 (-6433887.577353312, 8284360.4044772545),
 (-6433887.577353312, 8279436.980642353),
 (-6438811.001188213, 8279436.980642353),
 (-6438811.001188213, 8274513.556807452),
 (-6443734.425023114, 8274513.556807452),
 (-6448657.848858016, 8274513.556807452),
 (-6448657.848858016, 8269590.132972551),
 (-6453581.272692917, 8269590.132972551),
 (-6453581.272692917, 8274513.556807452),
 (-6458504.696527818, 8274513.556807452),
 (-6458504.696527818, 8269590.132972551),
 (-6463428.1203627195, 8269590.132972551),
 (-6463428.1203627195, 8274513.556807452),
 (-6468351.544197621, 8274513.556807452),
 (-6468351.544197621, 8269590.132972551),
 (-6473274.968032522, 8269590.132972551),
 (-6492968.663372126, 8269590.132972551),
 (-6492968.663372126, 8264666.70913765),
 (-6497892.087207028, 8264666.70913765),
 (-6497892.087207028, 8269590.132972551),
 (-6502815.511041929, 8269590.132972551),
 (-6502815.511041929, 8264666.70913765),
 (-6507738.93487683, 8264666.70913765),
 (-6507738.93487683, 8269590.132972551),
 (-6512662.358711731, 8269590.132972551),
 (-6512662.358711731, 8264666.70913765),
 (-6517585.782546632, 8264666.70913765),
 (-6517585.782546632, 8269590.132972551),
 (-6522509.206381533, 8269590.132972551),
 (-6522509.206381533, 8264666.70913765),
 (-6532356.054051336, 8264666.70913765),
 (-6532356.054051336, 8274513.556807452),
 (-6542202.9017211385, 8274513.556807452),
 (-6542202.9017211385, 8279436.980642353),
 (-6547126.32555604, 8279436.980642353),
 (-6547126.32555604, 8289283.828312156),
 (-6556973.173225842, 8289283.828312156),
 (-6556973.173225842, 8294207.252147056),
 (-6561896.597060744, 8294207.252147056),
 (-6561896.597060744, 8304054.099816859),
 (-6571743.444730546, 8304054.099816859),
 (-6571743.444730546, 8313900.947486661),
 (-6576666.868565448, 8313900.947486661),
 (-6576666.868565448, 8318824.371321563),
 (-6581590.292400348, 8318824.371321563),
 (-6581590.292400348, 8323747.795156464),
 (-6586513.716235249, 8323747.795156464),
 (-6586513.716235249, 8328671.218991365),
 (-6591437.140070151, 8328671.218991365),
 (-6591437.140070151, 8333594.642826267),
 (-6601283.987739952, 8333594.642826267),
 (-6601283.987739952, 8343441.490496069),
 (-6606207.411574854, 8343441.490496069),
 (-6606207.411574854, 8348364.9143309705),
 (-6616054.259244656, 8348364.9143309705),
 (-6616054.259244656, 8358211.762000772),
 (-6620977.6830795575, 8358211.762000772),
 (-6620977.6830795575, 8368058.609670575),
 (-6625901.106914459, 8368058.609670575),
 (-6625901.106914459, 8363135.1858356735),
 (-6630824.53074936, 8363135.1858356735),
 (-6630824.53074936, 8372982.033505476),
 (-6635747.954584261, 8372982.033505476),
 (-6635747.954584261, 8382828.881175278),
 (-6640671.378419163, 8382828.881175278),
 (-6640671.378419163, 8377905.457340376),
 (-6645594.802254064, 8377905.457340376),
 (-6645594.802254064, 8387752.305010179),
 (-6650518.226088965, 8387752.305010179),
 (-6650518.226088965, 8397599.152679982),
 (-6660365.073758768, 8397599.152679982),
 (-6660365.073758768, 8402522.576514883),
 (-6665288.497593668, 8402522.576514883),
 (-6665288.497593668, 8412369.424184686),
 (-6675135.345263471, 8412369.424184686),
 (-6675135.345263471, 8417292.848019587),
 (-6680058.769098372, 8417292.848019587),
 (-6680058.769098372, 8427139.69568939),
 (-6689905.616768174, 8427139.69568939),
 (-6689905.616768174, 8436986.543359192),
 (-6699752.4644379765, 8436986.543359192),
 (-6699752.4644379765, 8441909.967194093),
 (-6709599.312107779, 8441909.967194093),
 (-6709599.312107779, 8446833.391028993),
 (-6719446.159777582, 8446833.391028993),
 (-6719446.159777582, 8456680.238698795),
 (-6729293.007447384, 8456680.238698795),
 (-6729293.007447384, 8461603.662533697),
 (-6739139.855117187, 8461603.662533697),
 (-6739139.855117187, 8466527.086368598),
 (-6744063.278952088, 8466527.086368598),
 (-6744063.278952088, 8471450.5102035),
 (-6753910.12662189, 8471450.5102035),
 (-6753910.12662189, 8476373.9340384),
 (-6758833.550456791, 8476373.9340384),
 (-6758833.550456791, 8481297.357873302),
 (-6763756.9742916925, 8481297.357873302),
 (-6763756.9742916925, 8486220.781708203),
 (-6768680.398126594, 8486220.781708203),
 (-6768680.398126594, 8491144.205543105),
 (-6773603.821961494, 8491144.205543105),
 (-6773603.821961494, 8500991.053212907),
 (-6778527.2457963955, 8500991.053212907),
 (-6778527.2457963955, 8520684.748552512),
 (-6783450.669631297, 8520684.748552512),
 (-6783450.669631297, 8525608.172387414),
 (-6788374.093466198, 8525608.172387414),
 (-6788374.093466198, 8535455.020057216),
 (-6793297.517301099, 8535455.020057216),
 (-6793297.517301099, 8545301.867727019),
 (-6798220.941136001, 8545301.867727019),
 (-6798220.941136001, 8555148.71539682),
 (-6803144.364970902, 8555148.71539682),
 (-6803144.364970902, 8560072.139231721),
 (-6808067.788805803, 8560072.139231721),
 (-6808067.788805803, 8579765.834571326),
 (-6812991.212640705, 8579765.834571326),
 (-6812991.212640705, 8589612.682241129),
 (-6817914.636475606, 8589612.682241129),
 (-6817914.636475606, 8594536.10607603),
 (-6822838.060310507, 8594536.10607603),
 (-6822838.060310507, 8619153.225250535),
 (-6817914.636475606, 8619153.225250535),
 (-6817914.636475606, 8633923.496755239),
 (-6822838.060310507, 8633923.496755239),
 (-6822838.060310507, 8638846.92059014),
 (-6817914.636475606, 8638846.92059014),
 (-6817914.636475606, 8643770.344425041),
 (-6812991.212640705, 8643770.344425041),
 (-6812991.212640705, 8648693.768259943),
 (-6817914.636475606, 8648693.768259943),
 (-6817914.636475606, 8663464.039764646),
 (-6812991.212640705, 8663464.039764646),
 (-6812991.212640705, 8668387.463599548),
 (-6817914.636475606, 8668387.463599548),
 (-6817914.636475606, 8673310.887434449),
 (-6812991.212640705, 8673310.887434449),
 (-6812991.212640705, 8693004.582774054),
 (-6808067.788805803, 8693004.582774054),
 (-6808067.788805803, 8697928.006608956),
 (-6803144.364970902, 8697928.006608956),
 (-6798220.941136001, 8697928.006608956),
 (-6798220.941136001, 8702851.430443857),
 (-6793297.517301099, 8702851.430443857),
 (-6793297.517301099, 8707774.854278758),
 (-6788374.093466198, 8707774.854278758),
 (-6783450.669631297, 8707774.854278758),
 (-6783450.669631297, 8712698.27811366),
 (-6778527.2457963955, 8712698.27811366),
 (-6773603.821961494, 8712698.27811366),
 (-6773603.821961494, 8717621.70194856),
 (-6768680.398126594, 8717621.70194856),
 (-6763756.9742916925, 8717621.70194856),
 (-6763756.9742916925, 8722545.125783462),
 (-6758833.550456791, 8722545.125783462),
 (-6758833.550456791, 8727468.549618362),
 (-6753910.12662189, 8727468.549618362),
 (-6748986.7027869895, 8727468.549618362),
 (-6748986.7027869895, 8732391.973453263),
 (-6744063.278952088, 8732391.973453263),
 (-6739139.855117187, 8732391.973453263),
 (-6739139.855117187, 8737315.397288164),
 (-6734216.431282286, 8737315.397288164),
 (-6729293.007447384, 8737315.397288164),
 (-6729293.007447384, 8742238.821123065),
 (-6724369.583612483, 8742238.821123065),
 (-6719446.159777582, 8742238.821123065),
 (-6719446.159777582, 8747162.244957967)]```

1 个答案:

答案 0 :(得分:1)

由于多边形的坐标不正确,导致多边形无法正确绘制的主要原因

  1. 不是PlateCarree(),因为x不在(-180,180)范围内,或者y不在(-90,90)范围内。 所以,使用 ax.add_geometries([polygon], crs=ccrs.PlateCarree(), ...)是错误的。

  2. 不在情节范围内(请参阅代码内的注释)

这是尝试创建示例多边形并将其绘制在地图上的代码。

from shapely.geometry.polygon import Polygon
import cartopy.crs as ccrs
import cartopy.feature as cfeature
import matplotlib.pyplot as plt

# make the map
bounds = [-122., -72., 25., 50.]
plt.figure(figsize=(5, 3))
ax = plt.axes(projection=ccrs.LambertConformal())
ax.set_extent(bounds, crs=ccrs.PlateCarree())
ax.add_feature(cfeature.COASTLINE.with_scale('110m'), linewidth=0.75)
ax.add_feature(cfeature.STATES, linewidth=0.5)

# this makes use of 4 points within
# .. the range of the plotting areas
# x-range: ax.get_xlim()-->(-2649555.771560139, 2450710.00017399)
# y-range: ax.get_ylim()-->(-1558882.932595755, 1491858.0195908)
# to create a sample polygon, `pgon` for demonstration
xmin, xmax = ax.get_xlim()
ymin, ymax = ax.get_ylim()
xs, ys = xmax-xmin, ymax-ymin
padx, pady = xs/6.0, ys/6.0
xll, yll, xur, yur = xmin+padx, ymin+pady, xmax-padx, ymax-pady
# create a sample polygon, `pgon`
pgon = Polygon(((xll, yll),
        (xll, yur),
        (xur, yur),
        (xur, yll),
        (xll, yll)))

# this plots the polygon
# must declare correct coordinate system of the data
# here, coordinates in `pgon` are LambertConformal, 
# it must be specified here as `crs=ccrs.LambertConformal()`
ax.add_geometries([pgon], crs=ccrs.LambertConformal(), facecolor='b', edgecolor='red', alpha=0.8)

plt.show()

输出将是:

enter image description here