{"action":"created","issue":{"url":"https://api.github.com/repos/PokemonGoMap/PokemonGo-Map/issues/1501","repository_url":"https://api.github.com/repos/PokemonGoMap/PokemonGo-Map","labels_url":"https://api.github.com/repos/PokemonGoMap/PokemonGo-Map/issues/1501/labels{/name}","comments_url":"https://api.github.com/repos/PokemonGoMap/PokemonGo-Map/issues/1501/comments","events_url":"https://api.github.com/repos/PokemonGoMap/PokemonGo-Map/issues/1501/events","html_url":"https://github.com/PokemonGoMap/PokemonGo-Map/pull/1501","id":183211995,"number":1501,"title":"Spawnpoint Identification","user":{"login":"Artifice","id":216277,"avatar_url":"https://avatars.githubusercontent.com/u/216277?v=3","gravatar_id":"","url":"https://api.github.com/users/Artifice","html_url":"https://github.com/Artifice","followers_url":"https://api.github.com/users/Artifice/followers","following_url":"https://api.github.com/users/Artifice/following{/other_user}","gists_url":"https://api.github.com/users/Artifice/gists{/gist_id}","starred_url":"https://api.github.com/users/Artifice/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Artifice/subscriptions","organizations_url":"https://api.github.com/users/Artifice/orgs","repos_url":"https://api.github.com/users/Artifice/repos","events_url":"https://api.github.com/users/Artifice/events{/privacy}","received_events_url":"https://api.github.com/users/Artifice/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":94,"created_at":"2016-10-15T14:19:17Z","updated_at":"2016-11-23T19:53:01Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/PokemonGoMap/PokemonGo-Map/pulls/1501","html_url":"https://github.com/PokemonGoMap/PokemonGo-Map/pull/1501","diff_url":"https://github.com/PokemonGoMap/PokemonGo-Map/pull/1501.diff","patch_url":"https://github.com/PokemonGoMap/PokemonGo-Map/pull/1501.patch"},"body":"## Description\r\n\r\nAdd spawn point type identification of the three current types of spawn points -- 15, 30, and 60 minute spawns.\r\nChange spawn point scans to correct spawn time according to spawnpoint type\r\nAdd scans to complete identification for partially identified spawn points\r\nDynamically identify and check duration of new spawn points without requiring return to Hex scanning\r\nIdentify spawn points that have been removed and stop scanning them\r\n\r\n## FAQ\r\n\r\n> How does Speedscan find the time_until_hidden or TTH?\r\n\r\nAll spawns scanned at time when known spawned and again at the end of their spawn window to identify the time_til_hidden and get the exact spawn time. Speed Scan searches for the TTH by doing a search between the last seen time and 15 minutes after. If the spawn isn't there at this time, it searches again between that last seen time and earliest unseen time. Next check is between those times again, and so on. This reduces the time where the TTH could be by half every search, so it finds the TTH within five or so searches.\r\n\r\n>How many workers will I need?\r\n\r\nHere's a rough formula I worked out for how many workers\r\nCells = (((steps * (steps - 1)) * 3) + 1)\r\n\r\nSo with -st 26, you will have 1951 cells.\r\n\r\nTo do the initial scan in an hour so, at -kph 35, it takes about half a minute to get to a the next location to scan, and you will want to be able to scan all 1951 cells in about 10 minutes, so the workers is:\r\n\r\nNumber of workers to do initial scan in an hour = Cells / 20\r\n\r\nSo for -st 26, that is about 1951/20 = 98 workers.\r\n\r\nSpeedScan will work with less workers, although it will take longer than an hour for the initial scan. After the initial scan, the number of workers is dependent on the spawn density. More or less workers may be required than during the initial scan to cover all new spawns.\r\n\r\n> What should I set scan delay (-sd) to?\r\n\r\nWith the default speed limit of 35 kph, scan delay isn't needed. It takes about 12 seconds to get to a neighboring location, which is sufficient delay.\r\n\r\n> Does this work with beehives?\r\n\r\nUnless scanning a very large area (> -st 45?), SpeedScan does not require beehives. Each worker independently looks for the best scan it can do closest to it, so they work well together without fencing off workers into different hives.\r\n\r\n> How does it find the spawn points without having data from a Hex Scan?\r\n\r\nThis is covered in more detail in my initial [PR#1386](https://github.com/PokemonGoMap/PokemonGo-Map/pull/1386)\r\n\r\n> What happens when it finds a new spawn point after the initial scan is done?\r\n\r\nIf a spawn point is discovered while finding other spawn points, that scan location alone is reset and fully scanned to find the spawn point duration and exact spawn time.\r\n\r\n> How does it handle spawn points disappearing?\r\n\r\nAfter a spawn point is not seen as expected over five times in a row, it stops scheduling scans for that spawnpoint. The data remains in the DB.\r\n\r\n> How does it handle web changes in the search location?\r\n\r\nFor changing the location of the searcher, this should work, but with lots of rescanning. Each time you change the location of the server, Speed Scan will restart it's initial scan. Since SpeedScan records data about each search location, it is sensitive to changes in the location, and has to start over with the initial scan every time it is changed. This is true even if you move back to an already scanned location, but the loc is just slightly different.\r\n\r\n> Is the speed limit also used when changing the scanner location?\r\n\r\nYes. Each worker remembers it's last scan location and time, so if the scanner is moved, it will take the workers some time to get to the new location.\r\n\r\n## Motivation and Context\r\n\r\n<!--- Why is this change required? What problem does it solve? -->\r\n\r\n<!--- If it fixes an open issue, please link to the issue here. -->\r\n\r\nEnables better detection of pokemon and gives more time to catch pokemon that have longer spawn times.\r\n## How Has This Been Tested?\r\n\r\n<!--- Please describe in detail how you tested your changes. -->\r\n\r\n<!--- Include details of your testing environment, and the tests you ran to -->\r\n\r\n<!--- see how your change affects other areas of the code, etc. -->\r\n\r\n@Artifice tested on an SQLite system by identifying the type of of 5,000+ spawn points with -st 30 using 50 workers.\r\n100% of spawn points identified. < 1% of expected spawns not there when scanned.\r\nCaptcha free for all accounts that solved a captcha previously.\r\nSpeed warnings (No sightings/pokemon) < 1% of scans.\r\n\r\nTested by @Infernoman on a MySQL system and many others.\r\n\r\n## Screenshots (if appropriate):\r\n## Types of changes\r\n\r\n<!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: -->\r\n- [ ] Bug fix (non-breaking change which fixes an issue)\r\n- [X] New feature (non-breaking change which adds functionality)\r\n- [ ] Breaking change (fix or feature that would cause existing functionality to change)\r\n## Checklist:\r\n\r\n<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->\r\n\r\n<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->\r\n\r\n<!--  NOTE: In order to check code style locally and avoid having your build rejected by Travis, -->\r\n\r\n<!--  run the following commands before you commit: `flake8 .` and `npm run lint`. Fix any -->\r\n\r\n<!--  issues they point out. Note also that flake's NOQA is disabled on Travis. -->\r\n- [X] My code follows the code style of this project.\r\n- [ ] My change requires a change to the documentation.\r\n- [ ] I have updated the documentation accordingly."},"comment":{"url":"https://api.github.com/repos/PokemonGoMap/PokemonGo-Map/issues/comments/262615072","html_url":"https://github.com/PokemonGoMap/PokemonGo-Map/pull/1501#issuecomment-262615072","issue_url":"https://api.github.com/repos/PokemonGoMap/PokemonGo-Map/issues/1501","id":262615072,"user":{"login":"ic4roswings","id":22666766,"avatar_url":"https://avatars.githubusercontent.com/u/22666766?v=3","gravatar_id":"","url":"https://api.github.com/users/ic4roswings","html_url":"https://github.com/ic4roswings","followers_url":"https://api.github.com/users/ic4roswings/followers","following_url":"https://api.github.com/users/ic4roswings/following{/other_user}","gists_url":"https://api.github.com/users/ic4roswings/gists{/gist_id}","starred_url":"https://api.github.com/users/ic4roswings/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ic4roswings/subscriptions","organizations_url":"https://api.github.com/users/ic4roswings/orgs","repos_url":"https://api.github.com/users/ic4roswings/repos","events_url":"https://api.github.com/users/ic4roswings/events{/privacy}","received_events_url":"https://api.github.com/users/ic4roswings/received_events","type":"User","site_admin":false},"created_at":"2016-11-23T19:53:01Z","updated_at":"2016-11-23T19:53:01Z","body":"Is there anyway for you to do the intial scan on a beehive and retry the scan after a captcha is encounter ?"}}
{"actor":{"display_login":"ic4roswings"}}