PGO-mapscan-opt icon indicating copy to clipboard operation
PGO-mapscan-opt copied to clipboard

I think level 10 cells are a bit too large...

Open drtakhs opened this issue 8 years ago • 20 comments

As i told you over at reddit i decided to use the awesome s2 cells instead of circle planning... But i think that the level of the cells (currently lvl10) may be a bit too large of an area...

This leads to wasted time scanning unwanted areas that nearly no one will ever need... this time could be spent mapping spawns of more useful areas elsewhere... I will include 2 pictures so you can easily see exactly what i mean!

picture 1

picture 2

So i was wondering if a cell level of 12 or 13 (approximately since i couldn't find exactly the area per cell level) is more suitable for this. Also, if there was an option in the config file, would it make it difficult (or even impossible) to merge spawns from people that used cells of different levels?

Also i want to say a big thank you for all the awesome stuff you have created and everything you teach us through this!

drtakhs avatar Sep 21 '16 19:09 drtakhs

I think level 13 cells are more appropriate.

This is a level 10 coverage: s2 level 10

And this is a level 13 coverage: s2 level 13

darkforcesjedi avatar Sep 21 '16 21:09 darkforcesjedi

I used https://github.com/blackmad/s2map to compute the S2 coverage. It will work for an arbitrary polygon.

darkforcesjedi avatar Sep 21 '16 21:09 darkforcesjedi

Sure you can use level 12 or 13 cells and you can merge it just as easily without any overlap, which is the point of using s2 cells in the first place. You can change the "lvl_big = 10" line in res/maplib.py to achieve this right now.

But.... And here's the but. For level 10 plans, you can easily split them into many smaller subplans. But you can't join many level 13 plans to one in an easy way (talking about the plans here, not the areas). The level 10 cell boundary ensures no softbans due to teleporting around, if you fuse just the planned level 13 cells within each level 10 cell into one plan, you'll have a fluctuating area up to the amount for the whole level 10 cell, which means you could have scanned all of it in the first place. Also it's a difference whether you set the lvl 13 cells yourself based on where you think it's useful or whether you just scan the whole cell. Level 10 cells split into two subplans can be scanned with ~80 accounts, which is a good number leaving room for something like another 70 or so before getting softbans due to too many accounts. So level 10 is the perfect level, if you want to scan things like countries or huge cities or for a general global database.

I'll add the option for a joint cell format tomorrow, and the option to save all cells in the spawnview.py map in that joint format and also to change the cell level. For now I'll sleep :) By the way, you can pull frames in spawnview.py and thus mark huge areas, if you start at a marker. (Useful for the smaller level 13 cells.)

seikur0 avatar Sep 21 '16 21:09 seikur0

You don't need to join the level 13 cells. You can put the appropriate number of workers in each of a few id groups then subdivide the work between groups. This is how I built my map using the old layered hex spirals. I created a list of jobs and dispatched them to separate groups of accounts (by rewriting the json file and relaunching the client).

darkforcesjedi avatar Sep 21 '16 22:09 darkforcesjedi

I see, yeah splitting the workers into smaller groups is indeed a very good way to do that, I haven't thought of that :)

seikur0 avatar Sep 21 '16 22:09 seikur0

Maybe a little OT But how do you use the plans? I did not find it anywhere in the instruction/readme

UmbaSimpy avatar Sep 26 '16 13:09 UmbaSimpy

Check the wiki

darkforcesjedi avatar Sep 26 '16 13:09 darkforcesjedi

read the wiki section of this git... it should clear things for you =)

drtakhs avatar Sep 26 '16 13:09 drtakhs

@seikur0 I created a (really dirty) tool to tile irregular areas in hexagons. Check my fork under tiling-raw-tool branch. There is a function in there to make the layered spirals also but it isn't implemented by the interface. Creating a closed region (control+click to close) will automatically generate a JSON file with the list of scan locations.

image

darkforcesjedi avatar Sep 26 '16 21:09 darkforcesjedi

Are you using the grid tiles from my maplib?

seikur0 avatar Sep 26 '16 21:09 seikur0

They are just tiled 70m hexagons. The file has no dependencies except the Google maps API.

darkforcesjedi avatar Sep 26 '16 21:09 darkforcesjedi

Okay, can you change it to use my maplib? res/maplib.py Because with a spiral you have to worry about gaps between hex tiles and the grid realized in maplib.py is one encompassing the whole world without any gaps at all and the optimum number of hexes.

seikur0 avatar Sep 26 '16 21:09 seikur0

I suppose the JavaScript could generate the same grid and round reach location to the nearest grid location. It looks like you reduced your step side by 0.1% to avoid gaps due to rounding. The coverage grid for arbitrary polygon here uses rectilinear generation (not spiral) with an origin at the minimum lat/minimum lng of the polygon. If I use the same step size, it will be just as safe, but won't necessarily align to the same grid.

darkforcesjedi avatar Sep 27 '16 00:09 darkforcesjedi

I see, well if it's like that I'm fine with it, Yeah the safety of 0.1% and then also the rectifying earth radius, that Niantic uses, 6367000 m.

seikur0 avatar Sep 27 '16 00:09 seikur0

nice work jedi! i have one question tho, when working with hexagons will it be easy to merge the resulted .json learning files with other peoples scans just like s2 cells?

drtakhs avatar Sep 27 '16 01:09 drtakhs

I am not sure what changes @seikur0 has made to the learning files. The old files used to just contain a list of spawn point locations, gyms and Poké Stops. As noted above I need to account for the eccentricity of the earth (it isn't a perfect sphere) and include a little cell overlap to ensure there are no gaps. The list of locations can be pasted into a RAW mode planning file.

This is not an S2 decomposition and it is not aligned to seikur0's hex grid of the globe. Therefore, the result will not seamlessly align to anything else. So it is not very useful if you want to subdivide a region into smaller regions with 100% coverage.

This is useful for mapping one contiguous region (ie. If you just want to map your own town) or multiple discrete regions. (I map my town and a few neighboring towns and an island.) Most of the land area where I live is entirely inaccessible (swamp, marsh, forest, etc), so there is little point in covering it.

darkforcesjedi avatar Sep 27 '16 01:09 darkforcesjedi

The eccentricity of the earth doesn't matter at all, since Niantic uses it as perfect sphere with 6367 km diameter, it's just the circumference, if it's called that, which gets smaller towards the poles.

You can still merge these files. Now with the changes to spawn points old files just became worthless anyway, so that whole global database thing may not be realistic :/

seikur0 avatar Sep 27 '16 08:09 seikur0

On the topic of spawn points, I rescanned some of my region and it didn't appear to change. I plan on rescanning the whole thing soon anyway (using raw). There are 2 islands, 2 beaches, 3 or 4 towns, and a large city I want to map. I just need to generate another 40-50 accounts.

darkforcesjedi avatar Sep 27 '16 14:09 darkforcesjedi

It's interesting, some regions didn't seem to have changed at all, while others changed a lot.

seikur0 avatar Sep 27 '16 18:09 seikur0

@darkforcesjedi Just letting you know that I tried out your tiling-raw-tool fork, and ctrl+click didn't work for me on my Mac. I know extremely little about javascript, but just changed 'Control' to 'Shift' on line 23, and that worked fine for me.

mwong94 avatar Sep 28 '16 17:09 mwong94