遇到一个问题,希望大佬能帮助解决,感激不尽[抱拳]
已有的资源是: 全球的geojson数据, 和一张全球国家地图
需求是要 实现某个地区的最大亮度和平均亮度,
我是通过 rasterio 先对全球地图进行了切割 以此得到一个局部地区.
with open('/Users/albert/PycharmProjects/py_test/jiangsu.geojson') as f:
data = json.load(f)
for i in range(0 , len(data['features'])):
features = [data['features'][i]['geometry']]
out_image, out_transform = rio.mask.mask(band, features, crop=True, nodata=band.nodata)
out_meta = band.meta.copy()
out_meta.update({"driver": "GTiff",
"height": out_image.shape[1],
"width": out_image.shape[2],
"transform": out_transform})
band_mask = rio.open("newpic.tif", "w+", **out_meta)
band_mask.write(out_image)
举个栗子: 这是切出的江苏省地图
之后我想得到该图片每个像素的rbg值,
用以根据Luminance (standard for certain colour spaces): (0.2126R + 0.7152G + 0.0722*B) 计算亮度
但是这时候问题出现了, 用 rasterio.open()方法生成的图片 newpic.tif, 用Image.open()会报错--------------
img2 = Image.open('newpic.tif')
File "/Users/albert/PycharmProjects/py_test/venv/lib/python3.7/site-packages/PIL/Image.py", line 2705, in open
% (filename if filename else fp))
我尝试使用Image.open()打开已有的全球地图(有真实物理地址),确实是没有问题的,
所以,我猜想 是不是 Image.open()方法必须是要打开具有真实物理地址的图片?
如果是, 那有什么方法能把那张图片转成真实图片吗?
如果不是, 那还有什么方法能绕过这个问题, 来实现这个需求吗?
我google了好久,,, 没找到合适的解决方案, 故此请求支援~
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。