@@ -52,80 +52,13 @@ def scanraster(layer, progress):
52
52
53
53
54
54
def mapToPixel (mX , mY , geoTransform ):
55
- """Convert map coordinates to pixel coordinates.
56
-
57
- @param mX Input map X coordinate (double)
58
- @param mY Input map Y coordinate (double)
59
- @param geoTransform Input geotransform (six doubles)
60
- @return pX, pY Output coordinates (two doubles)
61
- """
62
-
63
- if geoTransform [2 ] + geoTransform [4 ] == 0 :
64
- pX = (mX - geoTransform [0 ]) / geoTransform [1 ]
65
- pY = (mY - geoTransform [3 ]) / geoTransform [5 ]
66
- else :
67
- (pX , pY ) = applyGeoTransform (mX , mY , invertGeoTransform (geoTransform ))
55
+ (pX , pY ) = gdal .ApplyGeoTransform (
56
+ gdal .InvGeoTransform (geoTransform )[1 ], mX , mY )
68
57
return (int (pX ), int (pY ))
69
58
70
59
71
60
def pixelToMap (pX , pY , geoTransform ):
72
- """Convert pixel coordinates to map coordinates.
73
-
74
- @param pX Input pixel X coordinate (double)
75
- @param pY Input pixel Y coordinate (double)
76
- @param geoTransform Input geotransform (six doubles)
77
- @return mX, mY Output coordinates (two doubles)
78
- """
79
-
80
- (mX , mY ) = applyGeoTransform (pX + 0.5 , pY + 0.5 , geoTransform )
81
- return (mX , mY )
82
-
83
-
84
- def applyGeoTransform (inX , inY , geoTransform ):
85
- """Apply a geotransform to coordinates.
86
-
87
- @param inX Input coordinate (double)
88
- @param inY Input coordinate (double)
89
- @param geoTransform Input geotransform (six doubles)
90
- @return outX, outY Output coordinates (two doubles)
91
- """
92
-
93
- outX = geoTransform [0 ] + inX * geoTransform [1 ] + inY * geoTransform [2 ]
94
- outY = geoTransform [3 ] + inX * geoTransform [4 ] + inY * geoTransform [5 ]
95
- return (outX , outY )
96
-
97
-
98
- def invertGeoTransform (geoTransform ):
99
- """Invert standard 3x2 set of geotransform coefficients.
100
-
101
- @param geoTransform Input GeoTransform (six doubles - unaltered)
102
- @return outGeoTransform Output GeoTransform (six doubles - updated)
103
- on success, None if the equation is uninvertable
104
- """
105
-
106
- # We assume a 3rd row that is [1 0 0]
107
- # Compute determinate
108
- det = geoTransform [1 ] * geoTransform [5 ] - geoTransform [2 ] * geoTransform [4 ]
109
-
110
- if abs (det ) < 0.000000000000001 :
111
- return
112
-
113
- invDet = 1.0 / det
114
-
115
- # Compute adjoint and divide by determinate
116
- outGeoTransform = [0 , 0 , 0 , 0 , 0 , 0 ]
117
- outGeoTransform [1 ] = geoTransform [5 ] * invDet
118
- outGeoTransform [4 ] = - geoTransform [4 ] * invDet
119
-
120
- outGeoTransform [2 ] = - geoTransform [2 ] * invDet
121
- outGeoTransform [5 ] = geoTransform [1 ] * invDet
122
-
123
- outGeoTransform [0 ] = (geoTransform [2 ] * geoTransform [3 ] - geoTransform [0 ]
124
- * geoTransform [5 ]) * invDet
125
- outGeoTransform [3 ] = (- geoTransform [1 ] * geoTransform [3 ] + geoTransform [0 ]
126
- * geoTransform [4 ]) * invDet
127
-
128
- return outGeoTransform
61
+ return gdal .ApplyGeoTransform (geoTransform , pX + 0.5 , pY + 0.5 )
129
62
130
63
131
64
class RasterWriter :
0 commit comments