{"id":18739578,"url":"https://github.com/springmeyer/render-collections","last_synced_at":"2026-01-27T15:03:45.178Z","repository":{"id":66365772,"uuid":"2688913","full_name":"springmeyer/render-collections","owner":"springmeyer","description":"sample style and notes around rendering geometry collections from postgis","archived":false,"fork":false,"pushed_at":"2011-12-22T22:30:41.000Z","size":96,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-05-20T04:35:04.856Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"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/springmeyer.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}},"created_at":"2011-11-01T16:32:15.000Z","updated_at":"2019-08-13T14:52:09.000Z","dependencies_parsed_at":"2023-02-20T02:45:32.912Z","dependency_job_id":null,"html_url":"https://github.com/springmeyer/render-collections","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/springmeyer/render-collections","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/springmeyer%2Frender-collections","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/springmeyer%2Frender-collections/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/springmeyer%2Frender-collections/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/springmeyer%2Frender-collections/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/springmeyer","download_url":"https://codeload.github.com/springmeyer/render-collections/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/springmeyer%2Frender-collections/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28815385,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-27T12:25:15.069Z","status":"ssl_error","status_checked_at":"2026-01-27T12:25:05.297Z","response_time":168,"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":[],"created_at":"2024-11-07T15:36:23.835Z","updated_at":"2026-01-27T15:03:45.160Z","avatar_url":"https://github.com/springmeyer.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rendering arbitrary geometry collections from postgis\n\n## Overview\n\nMapnik uses flexible data structures for storing features\nand their geometries. It also supports rendering rules\nto allow multiple styles be applied to a given layer.\n\nIf you have a postgis table with a single geometry column\nbut many different kinds of geometry types, it is easy to\nrender directly from this column. You just need to apply\nthe desired styling logic and rules to display your data in\nreasonable ways.\n\nThis repo includes a test XML and sample data to experiment\nwith this flexibility and brainstorm ways to make it better.\n\n\n## Setup\n\n    createdb -T template_postgis geometries\n    psql geometries -f load_geoms.sql\n\n\n## Testing renders\n\nEdit the 'postgis.xml' adding or removing styles you wish to view rendered.\n\nThen render the map out:\n\n    nik2img.py postgis.xml image.png\n\n\n## Details of data structures\n\n* Mapnik feature objects can store one or many geometries, each of arbitrary type.\n\n* Mapnik geometry objects can store single or multipart points, lines, or polygons\n\n* Some Mapnik datasources can enhance this flexibility by parsing OGC multigeometries\n  into a sequence of single geometries on a features: basically flattening OGC multigeometries\n  into a list of single geometries.\n\n* Mapnik symbolizers can be applied to features with arbitrary types of geometries\n\n* Mapnik renderers (agg, grid and cairo) are responsible for handling the drawing of\n  a given feature with applied symbolizer. Different rendering behaviors are triggered for certain\n  symbolizers at the rendering level depending on the `placement` type and/or the geometry type.\n  \n  For example, common uses where this flexibility makes life simple:\n  \n    - LineSymbolizer:\n       applied to a linestring geometry it strokes lines\n       applied to a polygon geometry it strokes the perimeter (outline)\n    \n    - PolygonSymbolizer:\n       applied to a polygon geometry it fills the polygon(s)\n  \n  But be aware this flexibility also creates some ambiguity or does nothing in some cases:\n  \n    - PolygonSymbolizer:\n       lines - draws unfilled polygons and looks pretty odd\n       point - does nothing\n\n    - LineSymbolizer:\n       point - does nothing\n\n  And depending on `placement` type (and the types default, which can depend on geometry type)\n  you can see some complex behaviors:\n  \n    - MarkersSymbolizer:\n       polygon geometry - draws point at centroid of each polygon (placement=point)\n       polygon geometry - draws point along the outline of each polygon (placement=line)\n       point geometry - draws point no matter the value of placement\n\n## Caveats\n  \n* TextSymbolizer - only the first placeable label for a geometry part will currently show up (https://github.com/mapnik/mapnik/issues/162)\n\nBugs around multigeometry support are tracked via:\n\n    https://github.com/mapnik/mapnik/issues?sort=created\u0026labels=multigeom+robustness\u0026direction=desc\u0026state=open\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspringmeyer%2Frender-collections","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspringmeyer%2Frender-collections","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspringmeyer%2Frender-collections/lists"}