{"id":37018970,"url":"https://github.com/sebasbaumh/postgis-java-ng","last_synced_at":"2026-01-14T02:02:12.997Z","repository":{"id":32186423,"uuid":"131821674","full_name":"sebasbaumh/postgis-java-ng","owner":"sebasbaumh","description":"PostGIS Java bindings","archived":false,"fork":false,"pushed_at":"2025-12-15T12:00:59.000Z","size":740,"stargazers_count":21,"open_issues_count":1,"forks_count":4,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-18T10:25:24.446Z","etag":null,"topics":["database","geometry","java","java-bindings","jdbc","jdk21","postgis","postgresql"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sebasbaumh.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":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-05-02T08:32:01.000Z","updated_at":"2025-12-15T11:16:38.000Z","dependencies_parsed_at":"2023-02-19T07:10:26.602Z","dependency_job_id":"b9d3f4ae-6a1a-400a-af8f-c371fa61d71c","html_url":"https://github.com/sebasbaumh/postgis-java-ng","commit_stats":null,"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/sebasbaumh/postgis-java-ng","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebasbaumh%2Fpostgis-java-ng","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebasbaumh%2Fpostgis-java-ng/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebasbaumh%2Fpostgis-java-ng/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebasbaumh%2Fpostgis-java-ng/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sebasbaumh","download_url":"https://codeload.github.com/sebasbaumh/postgis-java-ng/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebasbaumh%2Fpostgis-java-ng/sbom","scorecard":{"id":808415,"data":{"date":"2025-08-11","repo":{"name":"github.com/sebasbaumh/postgis-java-ng","commit":"a0ecb6c6860be21b31fbc95b75b31a3f6f36a9b4"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/9 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"27 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/sebasbaumh/postgis-java-ng/codeql-analysis.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/sebasbaumh/postgis-java-ng/codeql-analysis.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:52: update your workflow using https://app.stepsecurity.io/secureworkflow/sebasbaumh/postgis-java-ng/codeql-analysis.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:66: update your workflow using https://app.stepsecurity.io/secureworkflow/sebasbaumh/postgis-java-ng/codeql-analysis.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:79: update your workflow using https://app.stepsecurity.io/secureworkflow/sebasbaumh/postgis-java-ng/codeql-analysis.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/sonarcloud.yml:10: update your workflow using https://app.stepsecurity.io/secureworkflow/sebasbaumh/postgis-java-ng/sonarcloud.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/sonarcloud.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/sebasbaumh/postgis-java-ng/sonarcloud.yml/master?enable=pin","Info:   0 out of   7 GitHub-owned GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql-analysis.yml:28","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql-analysis.yml:29","Warn: no topLevel permission defined: .github/workflows/codeql-analysis.yml:1","Warn: no topLevel permission defined: .github/workflows/sonarcloud.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU Lesser General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: SAST configuration detected: CodeQL","Info: all commits (21) are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-23T12:26:27.288Z","repository_id":32186423,"created_at":"2025-08-23T12:26:27.289Z","updated_at":"2025-08-23T12:26:27.289Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408710,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"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":["database","geometry","java","java-bindings","jdbc","jdk21","postgis","postgresql"],"created_at":"2026-01-14T02:02:12.259Z","updated_at":"2026-01-14T02:02:12.986Z","avatar_url":"https://github.com/sebasbaumh.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PostGIS Java bindings (Next Generation) #\n\n[![CodeQL](https://github.com/sebasbaumh/postgis-java-ng/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/sebasbaumh/postgis-java-ng/actions/workflows/codeql-analysis.yml)\n[![Maven Central](https://img.shields.io/maven-central/v/io.github.sebasbaumh/postgis-java-ng)](https://search.maven.org/artifact/io.github.sebasbaumh/postgis-java-ng)\n[![javadoc](https://javadoc.io/badge2/io.github.sebasbaumh/postgis-java-ng/javadoc.svg)](https://javadoc.io/doc/io.github.sebasbaumh/postgis-java-ng/latest/index.html)\n[![License](https://img.shields.io/github/license/sebasbaumh/postgis-java-ng.svg)](https://github.com/sebasbaumh/postgis-java-ng/blob/master/LICENSE)\n\n[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=sebasbaumh_postgis-java-ng\u0026metric=ncloc)](https://sonarcloud.io/dashboard?id=sebasbaumh_postgis-java-ng)\n[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=sebasbaumh_postgis-java-ng\u0026metric=security_rating)](https://sonarcloud.io/dashboard?id=sebasbaumh_postgis-java-ng)\n[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=sebasbaumh_postgis-java-ng\u0026metric=reliability_rating)](https://sonarcloud.io/dashboard?id=sebasbaumh_postgis-java-ng)\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=sebasbaumh_postgis-java-ng\u0026metric=sqale_rating)](https://sonarcloud.io/dashboard?id=sebasbaumh_postgis-java-ng)\n\nThis project contains Java bindings for using [PostGIS](https://postgis.net/) geometries coming from a [PostgreSQL](https://www.postgresql.org/) database.  \n*It is originally based on [postgis-java](https://github.com/postgis/postgis-java) and I want to thank its authors for their work.*\n\n**Project goals and improvements:**\n* Support for geometries containing arcs like `CIRCULARSTRING` or `CURVEPOLYGON`\n* Support for PostGIS [geography datatype](https://postgis.net/docs/using_postgis_dbmanagement.html#PostGIS_Geography)\n* Extended support for bounding boxes, i.e. [box2d](https://postgis.net/docs/box2d_type.html)/[box3d](https://postgis.net/docs/box3d_type.html) PostGIS data types (as PGbox2d/PGbox3d)\n* Support for wrapped connections (like used in WildFly and c3p0 connection pooling)\n* Use generic Java types where possible and simplify/streamline API\n* Clean up code to basically only work on [WKB](https://en.wikipedia.org/wiki/Well-known_text#Well-known_binary)/EWKB implementations to reduce code duplication and focus on the actual database format\n* Support for binary transfer of geometry data (if enabled in PostgreSQL JDBC driver)\n  * use PostgreSQL JDBC driver [42.5.1](https://jdbc.postgresql.org/changelogs/2023-01-31-42.5.2-release/) or later to enable it automatically\n* Support for the latest PostgreSQL and PostGIS versions\n  * Recommended are PostgreSQL 15.1 and PostGIS 3.2.2\n  * Supported are versions starting from PostgreSQL 9.6 and PostGIS 2.3\n* Support for current JDKs\n  * JDK 21 ([main branch](https://github.com/sebasbaumh/postgis-java-ng/tree/master))\n  * deprecated branches\n    * [JDK 17](https://github.com/sebasbaumh/postgis-java-ng/tree/jdk17)\n    * [JDK 11](https://github.com/sebasbaumh/postgis-java-ng/tree/jdk11)\n    * [JDK 8](https://github.com/sebasbaumh/postgis-java-ng/tree/jdk8)\n* The [license](https://github.com/sebasbaumh/postgis-java-ng/blob/master/LICENSE) is still LGPL\n* The authors are listed [here](https://github.com/sebasbaumh/postgis-java-ng/blob/master/AUTHORS)\n\n**Supported [geometry types](https://postgis.net/docs/using_postgis_dbmanagement.html#RefObject):**\n* `Point`\n* `LineString`\n* `CircularString`\n* `CompoundCurve`\n* `Polygon`\n* `CurvePolygon`\n* `MultiPoint`\n* `MultiLineString`\n* `MultiCurve`\n* `MultiPolygon`\n* `MultiSurface`\n* `GeometryCollection`\n* `box2d`\n* `box3d`\n\n## How to use it ##\nThere is a Maven artifact in the official Maven repository, so just add this to your Maven POM:\n\n```xml\n\u003cdependency\u003e\n\t\u003cgroupId\u003eio.github.sebasbaumh\u003c/groupId\u003e\n\t\u003cartifactId\u003epostgis-java-ng\u003c/artifactId\u003e\n\t\u003cversion\u003e25.1.1\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\nThe version reflects the year of the release, e.g. `25.1.1` is a version released in 2024.\n\nThe API differs a bit from [postgis-java](https://github.com/postgis/postgis-java) with the main point being a different namespace (`io.github.sebasbaumh.postgis`) as publishing a project to Maven Central requires to own that namespace.\nIn addition the class structure is a bit different (see below) to support arc geometries and reduce boilerplate code, but you should be able to adapt to it easily.\nThe implementations of the parser and writer for the geometries have been heavily reworked to speed up processing and reduce complexity.\n\n## Hierarchy of geometry classes: ##\n\n![Hierarchy of geometry classes](ClassHierarchy.png)\n\n![Hierarchy of bounding box classes](ClassHierarchy2.png)\n\n## How to run tests utilizing a PostgreSQL server ##\n\nYou will need a PostgreSQL server with installed PostGIS extension for some of the tests.\n\nIn this example the server is named `MyServer` and the database `UnitTestDB`. The database can be empty except installing the PostGIS extension.\n\nYou should set up a database user for the unit tests, which has access rights to this database and only to this one.\nIn this example the user is called `unittest` and has the password `CHANGEME`.\n\nTo run the unit tests accessing the server, add the following to your VM arguments (eclipse Run Configuration-\u003eArguments-\u003eVM arguments):\n\n`-DtestJdbcUrl=\"jdbc:postgresql://MyServer/UnitTestDB\" -DtestJdbcUsername=\"unittest\" -DtestJdbcPassword=\"CHANGEME\"`\n\nOr add the following Maven build parameters to the launch configuration in eclipse:\n\n|Parameter Name|Value|\n|--------------|-----|\n|`testJdbcUrl`|`jdbc:postgresql://MyServer/UnitTestDB`|\n|`testJdbcUsername`|`unittest`|\n|`testJdbcPassword`|`CHANGEME`|\n\nIf it works, you will see this line in the build output:\n\n```\nTests are running with a database\n```\n\nelse\n\n```\nTests are running without a database\n```\n\n*There are also local tests contained in the project, so you are still able to test most parts without specifying a PostgreSQL server. And the test console output will show if tests were run with or without a database.*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsebasbaumh%2Fpostgis-java-ng","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsebasbaumh%2Fpostgis-java-ng","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsebasbaumh%2Fpostgis-java-ng/lists"}