[gdal-dev] Need Help with gdal2tiles for large super overlay in googlemaps

Nick Licata nalicata at gmail.com
Wed Oct 30 13:57:59 PDT 2019


I included as much detail as I could. I put links to all images because I
wasn't sure they would embed in the email list. Experienced programmer but
brand new to gdal.

Overview: My drone is taking multiple high resolution images that slightly
overlap each other in order to view 1 large high resolution image with
great detail after they are put together. I want to superimpose those
images in google maps as a super-overlay. It is a large area being imaged
and there can be from 800 to 1500 images. I am trying to follow these
instructions:
https://developers.google.com/kml/articles/raster#step-3:-get-information-about-the-image

I am using python3 3.6.8 and gdal 2.4.0 on ubuntu.

My plan is to execute gdal2tiles for each of these images that will compose
the 'single' large image to be super-overlayed in google maps (using
javascript).

These are the steps I took using this image downloaded locally:
https://s3.amazonaws.com/app-dev.mydroneop.com/DJI_0001.JPG

1. I run this command:
>gdalinfo DJI_0001.JPG -json
(the full output of this command is here:
https://s3.amazonaws.com/app-dev.mydroneop.com/gdalinfo-output.json)

But as I understand it the important part is this:

"cornerCoordinates":{
    "upperLeft":[
      0.0,
      0.0
    ],
    "lowerLeft":[
      0.0,
      3648.0
    ],
    "lowerRight":[
      5472.0,
      3648.0
    ],
    "upperRight":[
      5472.0,
      0.0
    ],
    "center":[
      2736.0,
      1824.0
    ]
  }

2. I then run this command and it produces this file:
https://s3.amazonaws.com/app-dev.mydroneop.com/output.vrt
> gdal_translate -of VRT -a_srs EPSG:4326 -gcp 0 0 -180 90 -gcp 5472 0 180
90 -gcp 5472 3648 180 -90 DJI_0001.JPG output.vrt

The -180 90 and 180 90 does not seem right, does not seem those should not
be variable specific to the images long/lat in some way.

3. Then I run this command:
gdalwarp -of VRT -t_srs EPSG:4326 output.vrt output2.vrt
and it produces this file:
https://s3.amazonaws.com/app-dev.mydroneop.com/output2.vrt

4. Then finally I run this command:
gdal2tiles.py -p geodetic -k output2.vrt
and it produces a folder of sub folders with images, but here is the doc
file is produces:
https://s3.amazonaws.com/app-dev.mydroneop.com/tiles/doc.kml
The other files (images and kmls) are accessible relative to that file's
location if you need to see them.

I then build a basic web page consuming googlemaps and 'import' the kml
file like this:

======START HTML=======

<script async defer
        src="https://maps.googleapis.com/maps/api/js?key=GOOGLE_MAPS_KEY&callback=initMap"></script>

function initMap() {
  map = new google.maps.Map(document.getElementById('map'), {
    // center: new google.maps.LatLng(43.6424359, -79.37448849999998),
    zoom: 2,
    disableDefaultUI: true,
    mapTypeId: google.maps.MapTypeId.ROAD

  });

  var layers = [];
  layers [0] = new
google.maps.KmlLayer("https://s3.amazonaws.com/app-dev.mydroneop.com/tiles/doc.kml",{
    preserveViewport: false,
    map: map
  });

}

======END HTML=======

Full Source is here:
https://s3.amazonaws.com/app-dev.mydroneop.com/index.html

Here is the problem and my questions:
1. I only run this on a single image while I get it to work, but the single
image appears in the center of the world map and not in the long/lat
associated to the image file. The image also appears stretched on it's
edges. As can be seen here:
https://s3.amazonaws.com/app-dev.mydroneop.com/result-zoomed-in.png
https://s3.amazonaws.com/app-dev.mydroneop.com/result-zoomed-out.png

2. What am I doing wrong with the placement of the images not being at
correct long lat position and rather being in the center of the world map?
I assume this has something to do with the 180 90 in the gdal_translate
command but don't know where to derive those numbers from if I should be
deriving them.

3. Is it ok that I want to run gdal2tiles on each individual image that
make up this large orthomosaic image that will be super-overlayed? Or
should those images be stitched together and then gdal2tiles be run on the
single super large image (400 mb and higher).

4. Why don't the images change as I zoom in? (the purpose of the tiles I
thought) in my google maps html file?

5. In the doc.kml file, will those relative links (relative to kml file)
work when the doc.kml is used in new google.maps.KmlLayer('doc.kml')?

6. Using this command below I thought it converted x and y pixel position
in the image to real world long/lat, how do I get long/lat from the
command's output?:
> gdallocationinfo DJI_0001.JPG 10 10

Report:
  Location: (10P,10L)
  Band 1:
    Value: 45
  Band 2:
    Value: 75
  Band 3:
    Value: 13



I have searched and read many docs but can't find a sample for what I am
trying to do, just pieces here and there and I haven't been able to put a
complete process together. If there is somewhere that has a relatively
complete explanation for what I am trying to do feel free to just point me
there.

Thank you for your patience if you read through all that, I appreciate any
help that can be offered.

Nick

-- 
Nick Licata
nalicata at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20191030/85d42f3e/attachment.html>


More information about the gdal-dev mailing list