{"id":28449128,"url":"https://github.com/sodascience/map-explorer","last_synced_at":"2026-02-10T17:38:45.406Z","repository":{"id":290423024,"uuid":"974400149","full_name":"sodascience/map-explorer","owner":"sodascience","description":"Map Explorer is a Vue.js web application for rendering GeoJSON maps with dynamic region coloring based on external data. ","archived":false,"fork":false,"pushed_at":"2025-12-27T12:56:59.000Z","size":36212,"stargazers_count":5,"open_issues_count":3,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-28T11:15:01.627Z","etag":null,"topics":["choropleth","data-analysis","data-visualization","geojson"],"latest_commit_sha":null,"homepage":"https://sodascience.github.io/map-explorer/","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sodascience.png","metadata":{"files":{"readme":"README.md","changelog":null,"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-04-28T18:05:58.000Z","updated_at":"2025-12-27T12:57:02.000Z","dependencies_parsed_at":null,"dependency_job_id":"1b1551c7-cddd-4524-a4a8-847969e5a60d","html_url":"https://github.com/sodascience/map-explorer","commit_stats":null,"previous_names":["trbknl/map-explorer","sodascience/map-explorer"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sodascience/map-explorer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sodascience%2Fmap-explorer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sodascience%2Fmap-explorer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sodascience%2Fmap-explorer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sodascience%2Fmap-explorer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sodascience","download_url":"https://codeload.github.com/sodascience/map-explorer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sodascience%2Fmap-explorer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29309593,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-10T16:09:25.305Z","status":"ssl_error","status_checked_at":"2026-02-10T16:08:52.170Z","response_time":65,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["choropleth","data-analysis","data-visualization","geojson"],"created_at":"2025-06-06T14:06:44.982Z","updated_at":"2026-02-10T17:38:45.392Z","avatar_url":"https://github.com/sodascience.png","language":"Vue","readme":"# Map Explorer\n\n[![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active)\n\nExplore the app directly in your browser:  \n👉 [Live demo on GitHub Pages](https://sodascience.github.io/map-explorer/)\n\n## Overview\n\nThis repository contains a Vue.js web application that renders GeoJSON maps with dynamic region coloring. \n\nThe application imports geographic boundary data in GeoJSON format and applies colors to regions based on external datasets (see `/public`). It can use any GeoJSON as the basis for the map and it can use a dataset to determine the coloring of the region.\n\nEverything runs locally in the browser with [duckdb-wasm](https://github.com/duckdb/duckdb-wasm) as the underlying SQL online analytical processing (OLAP) database.\n\n### Features\n\n- Import custom GeoJSON files for map boundaries\n- Upload datasets to determine region coloring\n- Browser-based processing with no server required\n- Real-time filtering and mapping of very large datasets\n\n## Development\n\n**Prerequisites**\n\n- Node.js and npm installed\n\n**Installation**\n\n1. Clone or fork the repository:\n\n```sh\ngit clone https://github.com/sodascience/map-explorer.git\n```\n\n2. Navigate to the project directory:\n\n```sh\ncd map-explorer\n```\n\n3. Install dependencies:\n\n```sh\nnpm install\n```\n\n4. Start the development server:\n\n```sh\nnpm run dev\n```\n\n## Use this application for yourself\n\nIf you want to use this application you can fork it and add your own files and configuration. \nYour map will be displayed on the Github page of your fork and you can share it with your own audience!\n\n### Configuration Modes\n\nmap-explorer can be configure by changing or adding configuration files in `/src/config/map-configs`.\n\nThe application currently supports one distinct configuration mode, determined by the `kind` field:\n\n#### 1. GeoJSON + External Data File (`geojson-datafile`)\n\nUse this mode when you have a separate data file (e.g., CSV or parquet file) that needs to be joined with your GeoJSON geometries. The data file should contain a column that holds the region id's in the GeoJSON and a valueColumn that holds numberic values that are used to color the regions. This mode supports categorical columns that can be used as filters. \n\n\n**Fields:**\n\n- **`kind`** (required): Must be set to `\"geojson-datafile\"`\n- **`geojsonFileName`** (required, string): Filename of the GeoJSON file. Put the file in the `/public` folder\n- **`dataFileName`** (required, string): Filename of the data file. Put the file in the `/public` folder\n- **`idColumnGeojson`** (required, string): The property name in the GeoJSON features that serves as the unique identifier\n- **`idColumnDataFile`** (required, string): The column name of the column in the data file that holds the same unique id's in the GeoJSON\n- **`categoryColumns`** (required, array of strings): Column names that represent categorical/filter dimensions\n- **`valueColumn`** (required, string): The column name containing the numeric values to visualize\n- **`legendTitle`** (optional, string): Title to display in the map legend\n- **`mapColorConfig`** (required, object): Configuration for color mapping (see [Map Color Configuration](#map-color-configuration))\n- **`filter`** (optional, object): Initial filter state as key-value pairs where keys are category column names and values are the selected categories\n\n**Example:**\n\n```json\n{\n  \"kind\": \"geojson-datafile\",\n  \"mapDescription\": {\n    \"title\": \"Historical disease mention rates\",\n    \"description\": \"This map contains data gathered via Delpher and processed by the ODISSEI SoDa team. Each municipality gets a \\\"mention rate\\\" assigned, which is a proxy for the actual disease pressure in this region. See \u003ca href=\\\"https://github.com/sodascience/disease_database\\\" target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\" class=\\\"underline\\\"\u003e https://github.com/sodascience/disease_database\u003c/a\u003e.\"\n  },\n  \"categoryColumns\": [\"year\", \"month\", \"disease\"],\n  \"valueColumn\": \"mention_rate\",\n  \"idColumnGeojson\": \"cbscode\",\n  \"idColumnDataFile\": \"cbscode\",\n  \"dataFileName\": \"disease_database_v1.2.parquet\",\n  \"geojsonFileName\": \"nl1869.geojson\",\n  \"legendTitle\": \"Mention Rate\",\n  \"mapColorConfig\": {\n    \"minValue\": 0,\n    \"maxValue\": 0.4,\n    \"colorScheme\": \"viridis\",\n    \"dynamic\": false,\n    \"colorSchemeInverted\": false\n  },\n  \"filter\": {\n    \"year\": \"1918\",\n    \"month\": \"10\",\n    \"disease\": \"influenza\"\n  }\n}\n```\n\n#### Map description Configuration\n\nThe `mapDescription` object controls the map description that will be shown in the information box.\n\n**Fields:**\n\n- **`title`** (required, string): Your map title\n- **`description`** (required, string): Your map description, supports html so you can use html formatted urls\n\n#### Map Color Configuration\n\nThe `mapColorConfig` object controls how numeric values are mapped to colors on the map.\n\n**Fields:**\n\n- **`minValue`** (required, number): The minimum value for the color scale.\n- **`maxValue`** (required, number): The maximum value for the color scale.\n- **`numBins`** (optional, positive integer): Number of discrete color bins to use.\n- **`colorScheme`** (optional, string): The color scheme to apply. If not specified, defaults to a standard scheme\n- **`dynamic`** (optional, boolean): If `true`, the color scale adjusts dynamically based on the current filtered data. If `false` or not specified, uses the fixed `minValue` and `maxValue`\n- **`colorSchemeInverted`** (optional, boolean): If `true`, inverts the color scheme (reverses the color order)\n\n##### Available Color Schemes\n\nThe following color schemes are available:\n\n- `viridis` - Perceptually uniform, colorblind-friendly (purple to yellow)\n- `plasma` - Perceptually uniform (purple to pink to yellow)\n- `inferno` - Perceptually uniform (black to purple to yellow)\n- `magma` - Perceptually uniform (black to purple to white)\n- `cividis` - Colorblind-optimized, blue to yellow\n- `turbo` - Rainbow-like, high contrast\n- `warm` - Warm colors (dark red to yellow)\n- `cool` - Cool colors (cyan to magenta)\n- `cubehelix` - Perceptually uniform spiral through color space\n- `no colorscheme` - No color scheme applied\n\n#### Multiple maps\n\nYou can add multiple maps by adding multiple configuration files in the `/src/config/map-configs` folder. \nIf you have multiple configuration files, you will be able to select your different maps through a dialog.\n\n\n#### Configuration errors\n\nIf you misspecified the configurations the app won't load an an error message will be shown in the browser console.\n\n### Embedding \n\nIf you want to embed map-explorer you can do so by including it into an iframe, like so:\n\n```html\n\u003ciframe \n  src=\"https://sodascience.github.io/map-explorer/\"\n  width=\"100%\" \n  height=\"800\"\n  frameborder=\"0\"\n  allowfullscreen\u003e\n\u003c/iframe\u003e\n```\n\n## Contact\n\nThis is a project by the [ODISSEI Social Data Science (SoDa)](https://odissei-soda.nl) team.\n\nDo you have questions, suggestions, or remarks on the technical implementation? Create an issue in the [issue tracker](https://github.com/sodascience/map-explorer/issues) or feel free to contact [Niek de Schipper](https://github.com/trbknl).\n\n\u003cimg src=\"https://odissei-soda.nl/images/logos/soda_logo.svg\" alt=\"SoDa logo\" width=\"250px\"/\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsodascience%2Fmap-explorer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsodascience%2Fmap-explorer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsodascience%2Fmap-explorer/lists"}