earth-reverse-engineering icon indicating copy to clipboard operation
earth-reverse-engineering copied to clipboard

[Feature] Find octants by bounding box

Open LexSong opened this issue 5 years ago • 11 comments

I add a python script to find overlapping octants by bounding box, instead of a single point: https://github.com/LexSong/earth-reverse-engineering-utils

The script will stop early if it finds too many octants at the same level, so it can be used to dump large areas. I don't know javascript well enough to add the function to the main repo.

Hopefully, people will find this useful.

Example output:

> python find_overlaps.py 37.419714, -122.083275 37.420626, -122.085045
LatLonBox(north=37.420626, south=37.419714, west=-122.085045, east=-122.083275)
[Octant level 1]
2
[Octant level 2]
20
[Octant level 3]
205
[Octant level 4]
2052
[Octant level 5]
20527
[Octant level 6]
205270
[Octant level 7]
2052706
[Octant level 8]
20527061
[Octant level 9]
205270616
[Octant level 10]
2052706160
[Octant level 11]
20527061605
[Octant level 12]
205270616052
[Octant level 13]
2052706160527
[Octant level 14]
20527061605273
[Octant level 15]
205270616052735
[Octant level 16]
2052706160527351
[Octant level 17]
20527061605273514
[Octant level 18]
205270616052735141
205270616052735140
[Octant level 19]
2052706160527351416
2052706160527351417
2052706160527351415
2052706160527351414
2052706160527351405
2052706160527351407
2052706160527351406
2052706160527351404
[Octant level 20]
20527061605273514162
20527061605273514160
....

LexSong avatar Jan 26 '19 12:01 LexSong

Very nice! I would link to it in the README if you don't mind. We could also merge it if we document the pip goog proto dependency; at this point the repo is just a collection of scripts anyway.

retroplasma avatar Jan 26 '19 23:01 retroplasma

Maybe we could use http://www.transcrypt.org to transpile python into JavaScript to have a single dependency ?

Rakiah avatar Jan 26 '19 23:01 Rakiah

Hi there, i've been trying to get this to work but when I run the python script I get this error: Traceback (most recent call last): File "find_overlaps.py", line 4, in from proto.BulkOrPlanetoid_pb2 import BulkOrPlanetoid File "C:\Users\snah\Documents\earth-reverse-engineering-master\proto\BulkOrPlanetoid_pb2.py", line 6, in from google.protobuf import descriptor as _descriptor ModuleNotFoundError: No module named 'google'

any idea what might be going wrong? Thank you!

felixgeen avatar Jul 22 '19 11:07 felixgeen

from google.protobuf import descriptor as _descriptor ModuleNotFoundError: No module named 'google'

any idea what might be going wrong? Thank you!

you need to install google protobuf

LexSong avatar Jul 24 '19 14:07 LexSong

@LexSong What website do you recommend to get the bounding box? I tried using coords from: http://bboxfinder.com/ and your py output is empty:

python3.6 find_overlaps.py 41.340216 2.102509 41.465113 2.270393
LatLonBox(north=41.340216, south=2.102509, west=41.465113, east=2.270393)
[Octant level 1]
[Octant level 2]
[Octant level 3]
[Octant level 4]
[Octant level 5]
[Octant level 6]
[Octant level 7]
[Octant level 8]
[Octant level 9]
[Octant level 10]
[Octant level 11]
[Octant level 12]
[Octant level 13]
[Octant level 14]
[Octant level 15]
[Octant level 16]
[Octant level 17]
[Octant level 18]
[Octant level 19]
[Octant level 20]

I also would place a python version check at the top of the script.

psociety avatar Dec 02 '19 11:12 psociety

@psociety you've mixed the number around, lexsong's script uses north then south then west then east, not north west south east

Rakiah avatar Dec 02 '19 12:12 Rakiah

@Rakiah oh, i tried recombining them yet i got the same result:

 python3.6 find_overlaps.py 41.340216 41.465113 2.102509 2.270393
LatLonBox(north=41.340216, south=41.465113, west=2.102509, east=2.270393)
[Octant level 1]
[Octant level 2]
[Octant level 3]
[Octant level 4]
[Octant level 5]
[Octant level 6]
[Octant level 7]
[Octant level 8]
[Octant level 9]
[Octant level 10]
[Octant level 11]
[Octant level 12]
[Octant level 13]
[Octant level 14]
[Octant level 15]
[Octant level 16]
[Octant level 17]
[Octant level 18]
[Octant level 19]
[Octant level 20]

psociety avatar Dec 02 '19 13:12 psociety

I assume that the north latitude should larger than south latitude? Try 41.465113 41.340216 2.102509 2.270393

LexSong avatar Dec 03 '19 05:12 LexSong

@LexSong you're right now it does throw octants up to level 13 :) Sorry for littering the thread.

psociety avatar Dec 03 '19 10:12 psociety

Hey, total beginner to this stuff. Could someone explain a few things to me?

How do I use the output of this script and enter it into earth-reverse-engineering? I have the bounding box of a building I want a model for and I'm not really sure how to use the output in earth-reverse-engineering.

Also, what do the levels mean? For example, what does specifying the max level here mean?

#Dump octant with max-level 20
node dump_obj.js 20527061605273514 20 

bhaktatejas922 avatar Nov 15 '20 22:11 bhaktatejas922

@bhaktatejas922 Level is the zoom, go to google maps and zoom in, you will see how a z var changes in the url. It obviously has a max zoom and not all areas have the same.

psociety avatar Nov 16 '20 07:11 psociety