{"id":26084084,"url":"https://github.com/nigelhorne/geo-anomalydetector","last_synced_at":"2025-10-14T21:36:19.782Z","repository":{"id":279264861,"uuid":"938246989","full_name":"nigelhorne/Geo-AnomalyDetector","owner":"nigelhorne","description":"Detect anomalies in geospatial coordinate datasets","archived":false,"fork":false,"pushed_at":"2025-09-26T16:31:03.000Z","size":79,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-14T21:36:19.248Z","etag":null,"topics":["cpan","cpan-module","distance-calculation","geography","perl","perl5"],"latest_commit_sha":null,"homepage":"https://metacpan.org/dist/Geo-AnomalyDetector","language":"Perl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nigelhorne.png","metadata":{"files":{"readme":"README.md","changelog":"Changes","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-02-24T16:46:45.000Z","updated_at":"2025-09-26T16:31:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"79efaef5-b301-4ddc-8b88-55bcab231d78","html_url":"https://github.com/nigelhorne/Geo-AnomalyDetector","commit_stats":null,"previous_names":["nigelhorne/geo-anomalydetector"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nigelhorne/Geo-AnomalyDetector","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nigelhorne%2FGeo-AnomalyDetector","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nigelhorne%2FGeo-AnomalyDetector/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nigelhorne%2FGeo-AnomalyDetector/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nigelhorne%2FGeo-AnomalyDetector/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nigelhorne","download_url":"https://codeload.github.com/nigelhorne/Geo-AnomalyDetector/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nigelhorne%2FGeo-AnomalyDetector/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279021375,"owners_count":26087023,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-14T02:00:06.444Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpan","cpan-module","distance-calculation","geography","perl","perl5"],"created_at":"2025-03-09T04:40:39.193Z","updated_at":"2025-10-14T21:36:19.777Z","avatar_url":"https://github.com/nigelhorne.png","language":"Perl","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NAME\n\nGeo::AnomalyDetector - Detect anomalies in geospatial coordinate datasets\n\n# SYNOPSIS\n\nThis module analyzes latitude and longitude data points to identify anomalies based on their distance from the mean location.\n\n    use Geo::AnomalyDetector;\n\n    my $detector = Geo::AnomalyDetector-\u003enew(threshold =\u003e 3);\n    my $coords = [ [37.7749, -122.4194], [40.7128, -74.0060], [35.6895, 139.6917] ];\n    my $anomalies = $detector-\u003edetect_anomalies($coords);\n    print 'Anomalies: ', join ', ', map { ($_-\u003e[0], $_-\u003e[1]) } @{$anomalies};\n\nEach co-ordinate can be either a two element array of \\[latitude, longitude\\] or an object that has\n`latitude` and `longitude` methods.\n\n# VERSION\n\n0.02\n\n# SUBROUTINES/METHODS\n\n## new\n\nCreates a Geo::AnomalyDetecter object.\n\nIt takes two optional parameters:\n\n- `threshold`\n\n    A number to hint at what consitutues an anomaly.\n    The larger the number,\n    the larger the distance to be called an anomaly,\n    there will be fewer matches.\n    The default is 3.\n\n- `units`\n\n    The unit to be used internally for measurement.\n    Can be `M` or `K`.\n    The default is `K`.\n    This should have no effect on the determination of outliers.\n\n## detect\\_anomalies\n\nIdentify outlier geographic coordinates based on their distance from the average location of a dataset.\n\nTakes an array reference of coordinate pairs.\nEach coordinate can be an array reference \\[lat, lon\\] or an object with latitude() and longitude() methods.\n\nIt returns a reference to an array of coordinates considered anomalous based on their distance from the mean.\n\n### API SPECIFICATION\n\n#### INPUT\n\n    {\n      'coordinates' =\u003e { type =\u003e 'arrayref' }     # Each element can be either a coordinate pair or an object\n    }\n\n#### OUTPUT\n\n    {\n      'type' =\u003e 'arrayref',  # A list of coordinates\n      'schema' =\u003e {\n        'type' =\u003e 'arrayref',\n        'min' =\u003e 2,  # Each coordinate is two numbers\n        'max' =\u003e 2,\n        'schema' =\u003e {\n          # FIXME: specify that the latitude (the first number) is between -90 and 90\n          'type' =\u003e 'number', 'min' =\u003e -180.0, 'max' =\u003e 180.0 }\n      }\n    }\n\n- Argument error: croak\n- No matches found: \\[\\]\n\n# AUTHOR\n\nNigel Horne, `\u003cnjh at nigelhorne.com\u003e`\n\n# BUGS\n\n# SEE ALSO\n\n- Test coverage report: [https://nigelhorne.github.io/Geo-AnomalyDetector/coverage/](https://nigelhorne.github.io/Geo-AnomalyDetector/coverage/)\n- [Geo::Location::Point](https://metacpan.org/pod/Geo%3A%3ALocation%3A%3APoint)\n- [Math::Trig](https://metacpan.org/pod/Math%3A%3ATrig)\n\n# SUPPORT\n\nThis module is provided as-is without any warranty.\n\nPlease report any bugs or feature requests to `bug-geo-anomalydetector at rt.cpan.org`,\nor through the web interface at\n[http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Geo-AnomalyDetector](http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Geo-AnomalyDetector).\nI will be notified, and then you'll\nautomatically be notified of progress on your bug as I make changes.\n\nYou can find documentation for this module with the perldoc command.\n\n    perldoc Geo::AnomalyDetector\n\nYou can also look for information at:\n\n- MetaCPAN\n\n    [https://metacpan.org/dist/Geo-AnomalyDetector](https://metacpan.org/dist/Geo-AnomalyDetector)\n\n- RT: CPAN's request tracker\n\n    [https://rt.cpan.org/NoAuth/Bugs.html?Dist=Geo-AnomalyDetector](https://rt.cpan.org/NoAuth/Bugs.html?Dist=Geo-AnomalyDetector)\n\n- CPAN Testers' Matrix\n\n    [http://matrix.cpantesters.org/?dist=Geo-AnomalyDetector](http://matrix.cpantesters.org/?dist=Geo-AnomalyDetector)\n\n- CPAN Testers Dependencies\n\n    [http://deps.cpantesters.org/?module=Geo::AnomalyDetector](http://deps.cpantesters.org/?module=Geo::AnomalyDetector)\n\n# LICENSE AND COPYRIGHT\n\nCopyright 2025 Nigel Horne.\n\nThis program is released under the following licence: GPL2\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnigelhorne%2Fgeo-anomalydetector","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnigelhorne%2Fgeo-anomalydetector","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnigelhorne%2Fgeo-anomalydetector/lists"}