Giter Site home page Giter Site logo

Comments (7)

mbostock avatar mbostock commented on April 28, 2024

The tricky thing is that for geographic coordinates (as in GeoTIFF Contours II) we want to retain the intersecting points along the antimeridian, which may not be possible if we eliminate all the straight line points. Also, parallels are not great arcs, so removing these points changes the interpretation in spherical coordinates.

from d3-contour.

purejoy avatar purejoy commented on April 28, 2024

Is it possible to add an option to remove the rectangular outer border when it's part of the generated path?
RaumZeit/MarchingSquares.js provided a noFrame option to remove it.

from d3-contour.

Fil avatar Fil commented on April 28, 2024

Contour simplification could be an option of d3-contour, but I believe it's enough to leave this to topojson as in https://observablehq.com/d/4fe65b865ccf545d

The tricky thing is for geographic coordinates

Shameless plug: for spatial contours we can use d3-geo-voronoi’s geoContour.

from d3-contour.

Fil avatar Fil commented on April 28, 2024

Regarding noFrame it seems that the solution is to filter out the multipolygons that have exactly 1 polygon with 1 ring with an area equal to n * m - 1/2, like so:

      p.coordinates.length === 1 &&
      p.coordinates[0].length === 1 &&
      2 * d3.polygonArea(p.coordinates[0][0]) === 2 * n * m - 1

The solution works both with smoothed/non smoothed contours. It seems to work for all n, m but we can fortify it against calculation drift by testing d3.polygonArea(p.coordinates[0][0]) > n * m - 3/4

The test is fast enough (exits immediately on most polygons, and 2*area is computed anyway), so it could be added at no cost as a property to the polygons as a property polygon.sphere or polygon.isFrame, leaving the API otherwise unchanged. It can also be left to the user as shown here.

from d3-contour.

Fil avatar Fil commented on April 28, 2024

Re: "noFrame", I think that returning the area (since we've computed it) as p.area could be the simplest solution. Beyond "filtering out frames", it can be used to compute stats. (Implemented in #47)

Re: contour simplification, I propose to leave that to topojson.

All in all, closing this issue. Feel free to comment/reopen etc as necessary.

from d3-contour.

mbostock avatar mbostock commented on April 28, 2024

I don’t think #47 is sufficiently helpful here: the points along straight lines occur not only when a contour polygon covers the entire frame, but whenever any contour polygon abuts the frame. In other words the darker blue polygons in the #47 example also have many points along straight lines that could be removed.

I think what I want here is to detect perfectly horizontal (x1 === x2) or perfectly vertical (y1 === y2) line segments and remove the extraneous intermediate points. But per #14 (comment) this should be optional.

from d3-contour.

Fil avatar Fil commented on April 28, 2024

Yes, #47 was only about the "noFrame" sub-issue.

from d3-contour.

Related Issues (20)

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.