{"id":19205047,"url":"https://github.com/v-spassky/gisture","last_synced_at":"2026-03-01T12:02:02.327Z","repository":{"id":111132918,"uuid":"534989017","full_name":"v-spassky/gisture","owner":"v-spassky","description":"Solution to a test task (GIS data processing).","archived":false,"fork":false,"pushed_at":"2022-10-03T16:49:03.000Z","size":44973,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-15T08:48:23.911Z","etag":null,"topics":["gis","test-task"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/v-spassky.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2022-09-10T12:17:58.000Z","updated_at":"2022-10-03T16:45:11.000Z","dependencies_parsed_at":"2023-06-02T17:00:14.752Z","dependency_job_id":null,"html_url":"https://github.com/v-spassky/gisture","commit_stats":{"total_commits":17,"total_committers":2,"mean_commits":8.5,"dds":0.4117647058823529,"last_synced_commit":"aa1c94949191d5e4074497490eb958bcc403e113"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v-spassky%2Fgisture","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v-spassky%2Fgisture/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v-spassky%2Fgisture/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v-spassky%2Fgisture/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/v-spassky","download_url":"https://codeload.github.com/v-spassky/gisture/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240277072,"owners_count":19775825,"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","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":["gis","test-task"],"created_at":"2024-11-09T13:11:01.497Z","updated_at":"2026-03-01T12:01:57.289Z","avatar_url":"https://github.com/v-spassky.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"### Description\r\n\r\nIt is a solution to [this](assets/task/task.md) test problem.\r\n\r\n### Notes\r\n\r\n- Python \u003cins\u003e3.8\u003c/ins\u003e was used in development environment, as well as in Docker image;\r\n- The code is deployed via Github Actions and Amazon ECS;\r\n- There are three files with dependencies declaration: [Pipfile](Pipfile), [Pipfile.lock](Pipfile.lock) and [requirements.txt](requirements.txt). I use the first two in development environment on my machine with pipenv and the third one for docker image (turns out pipenv isn`t really meant to be used inside Docker, so it is just more convenient to use requirements.txt in Dockerfile);\r\n- Sample data to try it out is included in the repo [here](static/samples) and can be accessed from the frontend as well;\r\n\r\n### Demonstration\r\n\r\n_The gif below is 40 Mb and might take a while to load. Sorry!_\r\n\r\n\u003cimg src=\"assets/demo.gif\" style=\"width:100%; max-width: 100%;\"\u003e\r\n\r\n### Algorithm explanation\r\n\r\nAll the work is done in these three lines:\r\n\r\n```python\r\nwith fiona.open(shapefile_name) as shapefile:\r\n    for record in shapefile:\r\n        plt.plot(*zip(*record['geometry']['coordinates']), linewidth=0.5)\r\n```\r\n\r\nSomewhat simplistic, but it gets the job done 🤷‍♂️\r\n\r\n### How to run locally\r\n\r\n##### In Docker\r\n\r\nClone git repo:\r\n\r\n`git clone https://github.com/v-spassky/gisture.git`\r\n\r\nNavigate to the project folder:\r\n\r\n`cd gisture`\r\n\r\nBuild the image:\r\n\r\n`sudo docker build -t gisture .`\r\n\r\nRun the image:\r\n\r\n`sudo docker run -d -p 8000:8000 gisture`\r\n\r\nNow the app is available on localhost:8000.\r\n\r\n##### In virtual environment\r\n\r\nClone git repo and navigate to the project folder:\r\n\r\n`git clone https://github.com/v-spassky/gisture.git`\r\n\r\n`cd gisture`\r\n\r\nInitialize virtual environment with the tool of your choice, activate it and install dependencies listed in [requirements.txt](requirements.txt) or [Pipfile](Pipfile).\r\n\r\n`python3 -m virtualenv .`\r\n\r\n`source bin/activate`\r\n\r\n`pip install -r requirements.txt`\r\n\r\nRun the app:\r\n\r\n`gunicorn app:app`\r\n\r\nNow the app is running on localhost:8000.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fv-spassky%2Fgisture","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fv-spassky%2Fgisture","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fv-spassky%2Fgisture/lists"}