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;








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?










share|improve this question






















  • 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


















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?










share|improve this question






















  • 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














0












0








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?










share|improve this question














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






share|improve this question













share|improve this question











share|improve this question




share|improve this question










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


















  • 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











1 Answer
1






active

oldest

votes


















0














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.






share|improve this answer

























  • 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











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
);



);













draft saved

draft discarded


















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









0














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.






share|improve this answer

























  • 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















0














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.






share|improve this answer

























  • 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













0












0








0







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.






share|improve this answer















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.







share|improve this answer














share|improve this answer



share|improve this answer








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 parameters geo_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











  • 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
















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

















draft saved

draft discarded
















































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.




draft saved


draft discarded














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





















































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







Popular posts from this blog

Romeo and Juliet ContentsCharactersSynopsisSourcesDate and textThemes and motifsCriticism and interpretationLegacyScene by sceneSee alsoNotes and referencesSourcesExternal linksNavigation menu"Consumer Price Index (estimate) 1800–"10.2307/28710160037-3222287101610.1093/res/II.5.31910.2307/45967845967810.2307/2869925286992510.1525/jams.1982.35.3.03a00050"Dada Masilo: South African dancer who breaks the rules"10.1093/res/os-XV.57.1610.2307/28680942868094"Sweet Sorrow: Mann-Korman's Romeo and Juliet Closes Sept. 5 at MN's Ordway"the original10.2307/45957745957710.1017/CCOL0521570476.009"Ram Leela box office collections hit massive Rs 100 crore, pulverises prediction"Archived"Broadway Revival of Romeo and Juliet, Starring Orlando Bloom and Condola Rashad, Will Close Dec. 8"Archived10.1075/jhp.7.1.04hon"Wherefore art thou, Romeo? To make us laugh at Navy Pier"the original10.1093/gmo/9781561592630.article.O006772"Ram-leela Review Roundup: Critics Hail Film as Best Adaptation of Romeo and Juliet"Archived10.2307/31946310047-77293194631"Romeo and Juliet get Twitter treatment""Juliet's Nurse by Lois Leveen""Romeo and Juliet: Orlando Bloom's Broadway Debut Released in Theaters for Valentine's Day"Archived"Romeo and Juliet Has No Balcony"10.1093/gmo/9781561592630.article.O00778110.2307/2867423286742310.1076/enst.82.2.115.959510.1080/00138380601042675"A plague o' both your houses: error in GCSE exam paper forces apology""Juliet of the Five O'Clock Shadow, and Other Wonders"10.2307/33912430027-4321339124310.2307/28487440038-7134284874410.2307/29123140149-661129123144728341M"Weekender Guide: Shakespeare on The Drive""balcony"UK public library membership"romeo"UK public library membership10.1017/CCOL9780521844291"Post-Zionist Critique on Israel and the Palestinians Part III: Popular Culture"10.2307/25379071533-86140377-919X2537907"Capulets and Montagues: UK exam board admit mixing names up in Romeo and Juliet paper"Istoria Novellamente Ritrovata di Due Nobili Amanti2027/mdp.390150822329610820-750X"GCSE exam error: Board accidentally rewrites Shakespeare"10.2307/29176390149-66112917639"Exam board apologises after error in English GCSE paper which confused characters in Shakespeare's Romeo and Juliet""From Mariotto and Ganozza to Romeo and Guilietta: Metamorphoses of a Renaissance Tale"10.2307/37323537323510.2307/2867455286745510.2307/28678912867891"10 Questions for Taylor Swift"10.2307/28680922868092"Haymarket Theatre""The Zeffirelli Way: Revealing Talk by Florentine Director""Michael Smuin: 1938-2007 / Prolific dance director had showy career"The Life and Art of Edwin BoothRomeo and JulietRomeo and JulietRomeo and JulietRomeo and JulietEasy Read Romeo and JulietRomeo and Julieteeecb12003684p(data)4099369-3n8211610759dbe00d-a9e2-41a3-b2c1-977dd692899302814385X313670221313670221

Creating closest line along the point''s azimuth using PostgreSQL Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?Drawing line between points at specific distance in PostGIS?How to efficiently find the closest point over the dateline?How to find the nearest point by using PostGIS function?PostGIS nearest point with LATERAL JOIN in PostgreSQL 9.3+Creating a table and inserting selected streets using plpgsql functionsCreating a table that stores Distances and other columnSaving select query results (year wise) from PostgreSQL/PostGIS to text filesWhat is the information behind this geometry?How to give start and end vertex ids dynamically in pgr_dijkstra?Point to Polygon nearest distance DS_distance is not using geography index & knn <-> or <#> does not give result in orderLine to point conversion with start point and end point detection?

Crop image to path created in TikZ? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)Crop an inserted image?TikZ pictures does not appear in posterImage behind and beyond crop marks?Tikz picture as large as possible on A4 PageTransparency vs image compression dilemmaHow to crop background from image automatically?Image does not cropTikzexternal capturing crop marks when externalizing pgfplots?How to include image path that contains a dollar signCrop image with left size given