如何从python中获取TIFF图像

时间:2015-12-15 14:24:41

标签: python tiff

今天我遇到了麻烦,因为我第一次使用TIFF文件时遇到了错误。我试图用欧洲污染物的价值来抓住一个光栅,所以我保持图像的高分辨率并不感兴趣,但只是为了保存数据,我可以操纵图像。我的代码非常简单:

"_id" : "JM15061985",
    "last_name" : "Michel",
    "first_name" : "Justine",
    "gender" : "Female",
    "title" : "Mme",
    "telephone" : 3375,
    "mail" : "justine.michel@yahoo.com",
    "language" : "French",
    "birthday" : ISODate("1985-06-14T22:00:00Z"),
    "status" : "VIP",
    "company" : "Test",
    "address" : [
        {
            "street" : "45 Avenue de Paris",
            "city" : "Nice",
            "zip_code" : "06072",
            "country" : "France"
        },
        {
            "street" : "12 square xvy",
            "city" : "Toulon",
            "zip_code" : "83072",
            "country" : "France"
        },
]

系统返回一个输出,我无法找到该错误的解决方案:

from __future__ import print_function
import numpy
import urllib2
from PIL import Image

f = open('./maccrasters/prova.tif','w')

fullMap = urllib2.urlopen("http://wdc.dlr.de/wdcservices/wcs.php?COVERAGE=17e72d93-76d9-4af6-9899-b7b04e2763c8&service=wcs&version=1.0.0&crs=epsg:4326&bbox=-25,30,45,70&RESX=0.1&RESY=0.1&request=getcoverage&format=application/x-tiff-32f&TIME=2015-12-13T00&elevation=0&OUTPUTFILENAME=17e72d93-76d9-4af6-9899-b7b04e2763c8_2015-12-13T00_0")

im = Image.open(fullMap) 

print(im.format, im.size, im.mode) # output is TIFF (700,400) F
im.show()
im.save(f, "TIFF")

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

的GeoTIFF

您的文件不是常规的tiff文件,它是一个需要特殊库的geoTiff文件。

对于python,有georasters库来读取这些文件。然后,您可以使用matplotlib显示它们。

在我看来,使用requests有一个比urllib更好的界面:

import requests
from PIL import Image
import georasters as gr
import matplotlib.pyplot as plt


url = 'http://wdc.dlr.de/wdcservices/wcs.php'

query = {
    'COVERAGE': '17e72d93-76d9-4af6-9899-b7b04e2763c8',
    'service': 'wcs',
    'version': '1.0.0',
    'crs': 'epsg:4326',
    'bbox': '-25,30,45,70',
    'RESX': '0.1',
    'RESY': '0.1',
    'request': 'getcoverage',
    'format': 'application/x-tiff-32f',
    'TIME': '2015-12-13T00',
    'elevation': '0',
    'OUTPUTFILENAME': '17e72d93-76d9-4af6-9899-b7b04e2763c8_2015-12-13T00_0'
}

with open('test.tiff', 'wb') as f:

    ret = requests.get(url, stream=True, params=query)
    for data in ret.iter_content(1024):
        f.write(data)

data = gr.from_file('test.tiff')

plt.imshow(data.raster, cmap='gray')
plt.show()

结果: result

答案 1 :(得分:0)

我也使用过.tiff张图片

我使用的是来自openCV的{​​{3}}并且效果非常好