What is the Formula to get an Image's Bounding Box from it's GDAL GeoTransform Array? The 2019 Stack Overflow Developer Survey Results Are InHow to get raster corner coordinates using Python GDAL bindings?How to compute the bounding box of multiple layers in lat/long?Raster data array output flipped on x-axis using python/gdal?Understanding the Map Tile creation propertiesGDAL_TRANSLATE Assumes Picture is Orientated North?How to get the pixels from a geotiff file in gdal python for a given bbox?Geotransformation for polar stereographic?How would I compute the minimum union bounding box given a list of bounding boxes?Determine map projectionHow to calculate the image size knowing its coordinates and pixel size?GDAL: Using gdallocationinfo on a rotated SAR image to get pixel value at Coordinates
What force causes entropy to increase?
How to design a circuit to convert 100 mV and 50 Hz Sine wave to square wave?
Could an empire control the whole planet with today's comunication methods?
How do spell lists change if the party levels up without taking a long rest?
Word to describe a time interval
Identify 80s or 90s comics with ripped creatures (not dwarves)
How to handle characters who are more educated than the author?
Why can't devices on different VLANs, but on the same subnet, communicate?
can infinity be divided by anything?
Homework question about an engine pulling a train
Button changing its text & action. Good or terrible?
What was the last x86 CPU that did not have the x87 floating-point unit built in?
What to do when moving next to a bird sanctuary with a loosely-domesticated cat?
Are spiders unable to hurt humans, especially very small spiders?
Am I ethically obligated to go into work on an off day if the reason is sudden?
Is it ok to offer lower paid work as a trial period before negotiating for a full-time job?
Do working physicists consider Newtonian mechanics to be "falsified"?
Is an up-to-date browser secure on an out-of-date OS?
How to make Illustrator type tool selection automatically adapt with text length
Does the ranger's Archery Fighting Style apply to the monk's Deflect Missiles feature, for a multiclassed monk/ranger?
How to read αἱμύλιος or when to aspirate
How to substitute curly brackets with round brackets in a grid of list
Circular reasoning in L'Hopital's rule
Free operad over a monoid object
What is the Formula to get an Image's Bounding Box from it's GDAL GeoTransform Array?
The 2019 Stack Overflow Developer Survey Results Are InHow to get raster corner coordinates using Python GDAL bindings?How to compute the bounding box of multiple layers in lat/long?Raster data array output flipped on x-axis using python/gdal?Understanding the Map Tile creation propertiesGDAL_TRANSLATE Assumes Picture is Orientated North?How to get the pixels from a geotiff file in gdal python for a given bbox?Geotransformation for polar stereographic?How would I compute the minimum union bounding box given a list of bounding boxes?Determine map projectionHow to calculate the image size knowing its coordinates and pixel size?GDAL: Using gdallocationinfo on a rotated SAR image to get pixel value at Coordinates
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I have a process which needs to read in an Image's GeoTransform Array, and convert it to the Bounding Box
i.e. If the Input is:
<GeoTransform>
7.8087700868360430e+05, 9.9974951285737870e+00, 0.0000000000000000e+00,
2.0276558410121971e+06, 0.0000000000000000e+00, -1.0000024189695811e+01
</GeoTransform>
I need the Output as
Upper Left:780877.009, 2027655.841
Lower Left:780877.009, 2010425.799
Upper Right:799692.295, 2027655.841
Lower Right:799692.295, 2010425.799
I see that you can do this using GDAL's Python bindings, but I need to do this without any dependencies.
Is there a formula that could be applied to get the expected Bounding Box?
coordinate-system gdal formula
add a comment |
I have a process which needs to read in an Image's GeoTransform Array, and convert it to the Bounding Box
i.e. If the Input is:
<GeoTransform>
7.8087700868360430e+05, 9.9974951285737870e+00, 0.0000000000000000e+00,
2.0276558410121971e+06, 0.0000000000000000e+00, -1.0000024189695811e+01
</GeoTransform>
I need the Output as
Upper Left:780877.009, 2027655.841
Lower Left:780877.009, 2010425.799
Upper Right:799692.295, 2027655.841
Lower Right:799692.295, 2010425.799
I see that you can do this using GDAL's Python bindings, but I need to do this without any dependencies.
Is there a formula that could be applied to get the expected Bounding Box?
coordinate-system gdal formula
See here: gdal.org/gdal_datamodel.html#gdal_datamodel_dataset_gtm Replace "Xpixel" and "Yline" with either 0, the image width, or the image height, depending on which corner you're trying to find the coordinates of.
– mikewatt
Aug 3 '18 at 19:50
add a comment |
I have a process which needs to read in an Image's GeoTransform Array, and convert it to the Bounding Box
i.e. If the Input is:
<GeoTransform>
7.8087700868360430e+05, 9.9974951285737870e+00, 0.0000000000000000e+00,
2.0276558410121971e+06, 0.0000000000000000e+00, -1.0000024189695811e+01
</GeoTransform>
I need the Output as
Upper Left:780877.009, 2027655.841
Lower Left:780877.009, 2010425.799
Upper Right:799692.295, 2027655.841
Lower Right:799692.295, 2010425.799
I see that you can do this using GDAL's Python bindings, but I need to do this without any dependencies.
Is there a formula that could be applied to get the expected Bounding Box?
coordinate-system gdal formula
I have a process which needs to read in an Image's GeoTransform Array, and convert it to the Bounding Box
i.e. If the Input is:
<GeoTransform>
7.8087700868360430e+05, 9.9974951285737870e+00, 0.0000000000000000e+00,
2.0276558410121971e+06, 0.0000000000000000e+00, -1.0000024189695811e+01
</GeoTransform>
I need the Output as
Upper Left:780877.009, 2027655.841
Lower Left:780877.009, 2010425.799
Upper Right:799692.295, 2027655.841
Lower Right:799692.295, 2010425.799
I see that you can do this using GDAL's Python bindings, but I need to do this without any dependencies.
Is there a formula that could be applied to get the expected Bounding Box?
coordinate-system gdal formula
coordinate-system gdal formula
asked Aug 3 '18 at 8:50
Devdatta TengsheDevdatta Tengshe
31.1k21109214
31.1k21109214
See here: gdal.org/gdal_datamodel.html#gdal_datamodel_dataset_gtm Replace "Xpixel" and "Yline" with either 0, the image width, or the image height, depending on which corner you're trying to find the coordinates of.
– mikewatt
Aug 3 '18 at 19:50
add a comment |
See here: gdal.org/gdal_datamodel.html#gdal_datamodel_dataset_gtm Replace "Xpixel" and "Yline" with either 0, the image width, or the image height, depending on which corner you're trying to find the coordinates of.
– mikewatt
Aug 3 '18 at 19:50
See here: gdal.org/gdal_datamodel.html#gdal_datamodel_dataset_gtm Replace "Xpixel" and "Yline" with either 0, the image width, or the image height, depending on which corner you're trying to find the coordinates of.
– mikewatt
Aug 3 '18 at 19:50
See here: gdal.org/gdal_datamodel.html#gdal_datamodel_dataset_gtm Replace "Xpixel" and "Yline" with either 0, the image width, or the image height, depending on which corner you're trying to find the coordinates of.
– mikewatt
Aug 3 '18 at 19:50
add a comment |
1 Answer
1
active
oldest
votes
You need both the geotransform and the number of rows and columns. If you look at your output, you'll see that a couple of elements of the geotransform correspond to the UL coordinates. So to get the extent you can just do
xmin = min(geo_t[0], geo_t[0] + x_size * geo_t[1])
xmax = max(geo_t[0], geo_t[0] + x_size * geo_t[1])
ymin = min(geo_t[3], geo_t[3] + y_size * geo_t[5])
ymax = max(geo_t[3], geo_t[3] + y_size * geo_t[5])
where x_size and y_size are the columns and rows, and geo_t is a (zero-indexed) array with the geotransform. In fact, this is valid Python code ;-)
As per @user30184 if there is a rotation in the geotransform, you need to take it into account. The formula for getting the coordinates of (x_coord, y_coord) as a function of the row/column pixel locations( x_pix, y_pix) is
x_coord = geo_t[0] + x_pix*geo_t[1] + y_pix*geo_t[2]
y_coord = geo_t[3] + y_pix*geo_t[5] + x_pix*geo_t[4]
In the question above, elements 2 and 4 are 0, so the first set of equations still hold.
It is not quite so simple if the image is rotated and the two corresponding parameters are not zeroes.
– user30184
Aug 3 '18 at 11:47
As @user30184 says, since there is are rotation parametersgeo_t[2] & geo_t[4]too need to be used.
– Devdatta Tengshe
Aug 3 '18 at 12:28
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "79"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f291630%2fwhat-is-the-formula-to-get-an-images-bounding-box-from-its-gdal-geotransform-a%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You need both the geotransform and the number of rows and columns. If you look at your output, you'll see that a couple of elements of the geotransform correspond to the UL coordinates. So to get the extent you can just do
xmin = min(geo_t[0], geo_t[0] + x_size * geo_t[1])
xmax = max(geo_t[0], geo_t[0] + x_size * geo_t[1])
ymin = min(geo_t[3], geo_t[3] + y_size * geo_t[5])
ymax = max(geo_t[3], geo_t[3] + y_size * geo_t[5])
where x_size and y_size are the columns and rows, and geo_t is a (zero-indexed) array with the geotransform. In fact, this is valid Python code ;-)
As per @user30184 if there is a rotation in the geotransform, you need to take it into account. The formula for getting the coordinates of (x_coord, y_coord) as a function of the row/column pixel locations( x_pix, y_pix) is
x_coord = geo_t[0] + x_pix*geo_t[1] + y_pix*geo_t[2]
y_coord = geo_t[3] + y_pix*geo_t[5] + x_pix*geo_t[4]
In the question above, elements 2 and 4 are 0, so the first set of equations still hold.
It is not quite so simple if the image is rotated and the two corresponding parameters are not zeroes.
– user30184
Aug 3 '18 at 11:47
As @user30184 says, since there is are rotation parametersgeo_t[2] & geo_t[4]too need to be used.
– Devdatta Tengshe
Aug 3 '18 at 12:28
add a comment |
You need both the geotransform and the number of rows and columns. If you look at your output, you'll see that a couple of elements of the geotransform correspond to the UL coordinates. So to get the extent you can just do
xmin = min(geo_t[0], geo_t[0] + x_size * geo_t[1])
xmax = max(geo_t[0], geo_t[0] + x_size * geo_t[1])
ymin = min(geo_t[3], geo_t[3] + y_size * geo_t[5])
ymax = max(geo_t[3], geo_t[3] + y_size * geo_t[5])
where x_size and y_size are the columns and rows, and geo_t is a (zero-indexed) array with the geotransform. In fact, this is valid Python code ;-)
As per @user30184 if there is a rotation in the geotransform, you need to take it into account. The formula for getting the coordinates of (x_coord, y_coord) as a function of the row/column pixel locations( x_pix, y_pix) is
x_coord = geo_t[0] + x_pix*geo_t[1] + y_pix*geo_t[2]
y_coord = geo_t[3] + y_pix*geo_t[5] + x_pix*geo_t[4]
In the question above, elements 2 and 4 are 0, so the first set of equations still hold.
It is not quite so simple if the image is rotated and the two corresponding parameters are not zeroes.
– user30184
Aug 3 '18 at 11:47
As @user30184 says, since there is are rotation parametersgeo_t[2] & geo_t[4]too need to be used.
– Devdatta Tengshe
Aug 3 '18 at 12:28
add a comment |
You need both the geotransform and the number of rows and columns. If you look at your output, you'll see that a couple of elements of the geotransform correspond to the UL coordinates. So to get the extent you can just do
xmin = min(geo_t[0], geo_t[0] + x_size * geo_t[1])
xmax = max(geo_t[0], geo_t[0] + x_size * geo_t[1])
ymin = min(geo_t[3], geo_t[3] + y_size * geo_t[5])
ymax = max(geo_t[3], geo_t[3] + y_size * geo_t[5])
where x_size and y_size are the columns and rows, and geo_t is a (zero-indexed) array with the geotransform. In fact, this is valid Python code ;-)
As per @user30184 if there is a rotation in the geotransform, you need to take it into account. The formula for getting the coordinates of (x_coord, y_coord) as a function of the row/column pixel locations( x_pix, y_pix) is
x_coord = geo_t[0] + x_pix*geo_t[1] + y_pix*geo_t[2]
y_coord = geo_t[3] + y_pix*geo_t[5] + x_pix*geo_t[4]
In the question above, elements 2 and 4 are 0, so the first set of equations still hold.
You need both the geotransform and the number of rows and columns. If you look at your output, you'll see that a couple of elements of the geotransform correspond to the UL coordinates. So to get the extent you can just do
xmin = min(geo_t[0], geo_t[0] + x_size * geo_t[1])
xmax = max(geo_t[0], geo_t[0] + x_size * geo_t[1])
ymin = min(geo_t[3], geo_t[3] + y_size * geo_t[5])
ymax = max(geo_t[3], geo_t[3] + y_size * geo_t[5])
where x_size and y_size are the columns and rows, and geo_t is a (zero-indexed) array with the geotransform. In fact, this is valid Python code ;-)
As per @user30184 if there is a rotation in the geotransform, you need to take it into account. The formula for getting the coordinates of (x_coord, y_coord) as a function of the row/column pixel locations( x_pix, y_pix) is
x_coord = geo_t[0] + x_pix*geo_t[1] + y_pix*geo_t[2]
y_coord = geo_t[3] + y_pix*geo_t[5] + x_pix*geo_t[4]
In the question above, elements 2 and 4 are 0, so the first set of equations still hold.
edited Aug 3 '18 at 16:14
answered Aug 3 '18 at 11:10
JoseJose
1,3271015
1,3271015
It is not quite so simple if the image is rotated and the two corresponding parameters are not zeroes.
– user30184
Aug 3 '18 at 11:47
As @user30184 says, since there is are rotation parametersgeo_t[2] & geo_t[4]too need to be used.
– Devdatta Tengshe
Aug 3 '18 at 12:28
add a comment |
It is not quite so simple if the image is rotated and the two corresponding parameters are not zeroes.
– user30184
Aug 3 '18 at 11:47
As @user30184 says, since there is are rotation parametersgeo_t[2] & geo_t[4]too need to be used.
– Devdatta Tengshe
Aug 3 '18 at 12:28
It is not quite so simple if the image is rotated and the two corresponding parameters are not zeroes.
– user30184
Aug 3 '18 at 11:47
It is not quite so simple if the image is rotated and the two corresponding parameters are not zeroes.
– user30184
Aug 3 '18 at 11:47
As @user30184 says, since there is are rotation parameters
geo_t[2] & geo_t[4] too need to be used.– Devdatta Tengshe
Aug 3 '18 at 12:28
As @user30184 says, since there is are rotation parameters
geo_t[2] & geo_t[4] too need to be used.– Devdatta Tengshe
Aug 3 '18 at 12:28
add a comment |
Thanks for contributing an answer to Geographic Information Systems Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f291630%2fwhat-is-the-formula-to-get-an-images-bounding-box-from-its-gdal-geotransform-a%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
See here: gdal.org/gdal_datamodel.html#gdal_datamodel_dataset_gtm Replace "Xpixel" and "Yline" with either 0, the image width, or the image height, depending on which corner you're trying to find the coordinates of.
– mikewatt
Aug 3 '18 at 19:50