-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathB06246_04_21-KML.py
41 lines (38 loc) · 1.21 KB
/
B06246_04_21-KML.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# Creating a KML Image Overlay for a Raster
# https://github.com/GeospatialPython/Learn/raw/master/SatImage.zip
from osgeo import gdal
import zipfile
srcf = "/qgis_data/rasters/satimage.tif"
vfn = "/vsimem/satimage.jpg"
drv = gdal.GetDriverByName('JPEG')
src = gdal.Open(srcf)
tgt = drv.CreateCopy(vfn, src)
rasterLyr = QgsRasterLayer(srcf, "SatImage")
e = rasterLyr.extent()
kml = """<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>QGIS KML Example</name>
<GroundOverlay>
<name>SatImage</name>
<drawOrder>30</drawOrder>
<Icon>
<href>SatImage.jpg</href>
</Icon>
<LatLonBox>
<north>%s</north>
<south>%s</south>
<east>%s</east>
<west>%s</west>
</LatLonBox>
</GroundOverlay>
</Document>
</kml>""" %(e.yMaximum(), e.yMinimum(), e.xMaximum(), e.xMinimum())
vsifile = gdal.VSIFOpenL(vfn,'r')
gdal.VSIFSeekL(vsifile, 0, 2)
vsileng = gdal.VSIFTellL(vsifile)
gdal.VSIFSeekL(vsifile, 0, 0)
z = zipfile.ZipFile("/qgis_data/rasters/satimage.kmz", "w", zipfile.ZIP_DEFLATED)
z.writestr("doc.kml", kml)
z.writestr("SatImage.jpg", gdal.VSIFReadL(1, vsileng, vsifile))
z.close()