Coder Social home page Coder Social logo

placemark / placemark Goto Github PK

View Code? Open in Web Editor NEW
1.1K 1.1K 64.0 2.59 MB

A flexible web-based editor, converter, visualization tool, for geospatial data

Home Page: https://play.placemark.io/

TypeScript 98.63% JavaScript 0.71% CSS 0.54% Dockerfile 0.12%
geojson geospatial maps

placemark's Introduction

Placemark

This is the open source project Placemark, which was previously a SaaS app. Placemark is a tool for creating, editing, and visualizing map data, in a variety of formats including GeoJSON, KML, Shapefiles, CSV, and many more.

This is a monorepo and it contains multiple subprojects:

Subprojects

  • Play is the free-to-use interface accessible at play.placemark.io. It has no server backend or map storage, but it supports all other features.
  • Placemark-app is a simplified version of the Placemark SaaS app that supports server storage and realtime sync and collaboration.
  • The SaaS branch contains the unsimplified, full-fledged code for the Placemark product, which is a superset of Placemark-app and includes things like billing and account provisioning.

Placemark could be useful to you if

  • You need to edit, preview, create map data and want something similar to geojson.io, a project originally by the same author.
  • You want to build a SaaS on this code. It is very liberally licensed. If you want to create a startup on this, you can.
  • You want to extract patterns or modules from the codebase. It has implementations of many things in it.

Placemark is not

  • An alternative to Mapbox GL, Maplibre, Deck.gl, etc: it uses Mapbox GL. It is a tool for editing maps, it uses existing tech to render the maps.
  • A library you can use in your app. But you could possibly extract such a library from the codebase with a bit of time and effort.
  • A product with customer support. It used to be, but is now an open source product mostly developed and maintained by Tom MacWright in his (my) free time.

placemark's People

Contributors

anup39 avatar ddevmoe avatar ga-3tan avatar stevage avatar tmcw avatar yuiseki avatar zeeyang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

placemark's Issues

CLI

I think there's kind of a reasonable take that this should be in rust, with clap as the CLI parser.

Ability to pull / interact with OSM features

This was requested a few times and would be fun to add.

⚠️ Legal implications: OSM has a license and the community is extremely enthusiastic about enforcing it. Because Placemark has been about doing things The Nice Way, there should be a toast or another note that you may need to credit OSM.

Snapping between existing features during drawing

I work primarily with GIS data from water utilities, and ensuring all assets are connect correctly is important when drawing their assets. I’d almost always have snapping tools enabled in either QGIS or ArcGIS to connect features with each other during drawing or editing.

This is particularly important in the specialization I work in, which is hydraulic modeling (EPANET and SWMM). Modellers will import the GIS data to create a connected graph structure to simulate the network.

Have you considered including snapping support between layers in Placemark? Currently, I perform all my editing in desktop tools that support snapping. Here is an example of what I'm thinking of done in Mapbox GL Draw.

Part of the reason for my request is because I also maintain an open source web based version of a popular simulation library and potentially mixing it into a fork of Placemark seemed interesting to me.

Update to Prisma 5

Prisma is causing some havoc with Docker. Prisma 5 seems to cause less havoc, per reports, so it's worth switching.

In the long term, Drizzle almost strictly better than Prisma - no binary generation, faster, etc. But switching is a big task, so that's deferred.

Find/replace strings in the properties table

One of the many properties-table enhancements: it'd be nice to find & replace in the properties table: if you have lots of properties with some common mispelling, unifying NA and N/A for example, a traditional find/replace UI could be nifty.

I think this is mainly a UI/UX challenge: find & replace across properties is pretty simple to implement, but where to put this UI, and whether to support previewing or other more complex UIs is up to the implementer to decide.

Switch away from yarn

This uses yarn 1.x to install dependencies, which is pretty old and nobody uses it anymore. We should switch to npm or pnpm. Maybe pnpm.

The main issue to solve is that there's a lockfile keeping deps in place and once we upgrade to newly-resolved deps, we get:

 ⨯ Error [ERR_REQUIRE_ESM]: require() of ES Module /Users/tmcw/p/placemark-oss/node_modules/.pnpm/@[email protected]/node_modules/@mapbox/tiny-sdf/index.js from /Users/tmcw/p/placemark-oss/node_modules/.pnpm/@[email protected][email protected][email protected][email protected][email protected][email protected][email protected]/node_modules/@deck.gl/layers/dist/es5/text-layer/font-atlas-manager.js not supported.
Instead change the require of index.js in /Users/tmcw/p/placemark-oss/node_modules/.pnpm/@[email protected][email protected][email protected][email protected][email protected][email protected][email protected]/node_modules/@deck.gl/layers/dist/es5/text-layer/font-atlas-manager.js to a dynamic import() which is available in all CommonJS modules.
    at mod.require (/Users/tmcw/p/placemark-oss/node_modules/.pnpm/[email protected]_@[email protected][email protected][email protected]/node_modules/next/dist/server/require-hook.js:65:28)
    at Object.<anonymous> (/Users/tmcw/p/placemark-oss/node_modules/.pnpm/@[email protected][email protected][email protected][email protected][email protected][email protected][email protected]/node_modules/@deck.gl/layers/dist/es5/text-layer/font-atlas-manager.js:17:39)
    at mod.require (/Users/tmcw/p/placemark-oss/node_modules/.pnpm/[email protected]_@[email protected][email protected][email protected]/node_modules/next/dist/server/require-hook.js:65:28)
    at Object.<anonymous> (/Users/tmcw/p/placemark-oss/node_modules/.pnpm/@[email protected][email protected][email protected][email protected][email protected][email protected][email protected]/node_modules/@deck.gl/layers/dist/es5/text-layer/text-layer.js:32:49) {
  code: 'ERR_REQUIRE_ESM',
  page: '/map/zJ7HAtjokRyftNNmNEHiX'
}

This is upstream in deckgl/layers #7735.

Run free instance of /play

With protomaps it should be possible to run a /play instance with no server component, or a super lightweight one, and next-to-no tile costs.

RFC: Split off saas branch

Proposal for simplifying Placemark:

  • Create a branch called saas which contains the current main branch verbatim
  • Continue to develop on main, but remove the components of Placemark dedicated to making it a SaaS. This means:
    • Integration with Stripe for billing.
    • Emails for trial ending, etc.
    • Quota system for how many maps can be created.

Maplibre compatibility / transition

Right now, Placemark uses a combination of Mapbox GL JS and Deck.gl. I think this could use some freshening-up:

  • Maplibre and Protomaps are probably the best combination for an open source project, since Maplibre is fully OSS.
  • Deck.gl has been causing bugs in the app for a while and never got transitioned-to for anything more than rendering vertices. Moving away from Deck.gl would probably make sense.

The dream scenario would be implementing a diffing update pattern in Maplibre that was super efficient.

Support for RTL text on the map

Hi,

The tables and JSON files work as expected when using RTL text format (in this case Hebrew), but when displayed on the map, they appear backwards.

Screenshot 2024-03-10 111902

Server-side versions

Feedback

From Matt Berg:

You might want to consider allowing you to download the original source used to create the map layer. I can see scenarios where I made edits to optimize for performance (eg. drop columns) but then would want to go back to the original to do something else with it.

Geometry information not working on play.placemark.io

When trying to access Geometry Information after accessing a line, I get an error stating "please try again". This issue persisted across Firefox, GNOME Web (WebKit), and Chromium.

These are the console errors:

console showing a next.js useMutation error

Screencast.from.2024-02-29.14-44-30.webm

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.