Giter VIP home page Giter VIP logo

geofeatures2's People

Contributors

eswiss avatar phchang avatar tonystone avatar

Stargazers

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

Watchers

 avatar  avatar  avatar

geofeatures2's Issues

Implement `func locate(along: Double) -> Geometry`.

Add to protocol Geometry and all implementing types with the syntax:

    ///
    /// - Returns: A derived geometry collection value that matches the specified m coordinate value.
    ///
    func locate(along: Double) -> Geometry

Implement WKTWriter

This should produce strict OGC WKT output for all geometry types and options including Z and M.

NOTE: Internally this will look nearly the same as WKTReader in function hierarchy accept it will produce the WKT String instead of consume it.

ApplicationServices.Polygon when imported interferes with our Polygon.

When Apple ApplicationServices is imported either directly or indirectly (XCTest imports it indirectly) code using GeoFeatures can not resolve our Polygon. We get the following messages. We need to decide how or if we handle this edge case.

error: 'Polygon' is ambiguous for type lookup in this context

ApplicationServices.Polygon:1:18: note: found this candidate
public typealias Polygon = MacPolygon
                 ^
GeoFeatures.Polygon:1:15: note: found this candidate
public struct Polygon : Geometry, Surface {
              ^

Implement `func isSimple() -> Bool`.

Add to protocol Geometry and all implementing types with the syntax:

    ///
    /// - Returns:  true if this GeometryType instance has no anomalous geometric points, such
    /// as self intersection or self tangent.
    ///
    func isSimple() -> Bool

Implement WTKReader...

Create a recursive descent parser as the internals of the WKTReader class.

Initially this should parse the types we support completely ignoring any others. It should also support the full WKT syntax as defined by OGC including Z & M indicators.

Create coding standards Wiki page...

Lets create some standards for code and style.

For starters (and this can change when standards are done) is that you should follow the predominant style in the file so that the file is consistent :-)

Need a function to return a collection of inner rings of MultiPolygon

Need a function to return a collection of inner rings of a MultiPolygon. This would likely be very similar to returning the collection of inner rings on a single Polygon, which returns an array of RingType objects. In this case, the result would be an array of an array of RingType objects. There would not need to be any particular ordering of the arrays.

Change `equals()` to ignore order based on OGC

The OGC standard states for Collection types

By the nature of digital representations, collections are inherently ordered by the underlying storage mechanism. Two collections whose difference is only this order are spatially equal and will return equivalent results in any geometric-defined operations.

-- OGC Simple Feature Access - Part 1: Common Architecture v1.2.1 (6.1.3.2)

We currently require specific ordering on our equals() and == since it is based on equals(). The new implementation should possibly be based on the relate method which should ignore ordering.

Implement `func locate(along: Double) -> Geometry`.

Add to protocol Geometry and all implementing types with the syntax:

    ///
    /// - Returns: A derived geometry collection value that matches the specified m coordinate value.
    ///
    func locate(along: Double) -> Geometry

Should `equals` consider precision and coordinateReferenceSystem?

Should equals consider precision and coordinateReferenceSystem determining equality for 2 objects?

It currently considers the exact type of the object including it's coordinate type and if they are not the same, it's not considered equal.

⎯ Equals (anotherGeometry: Geometry): Integer — Returns 1 (TRUE) if this geometric object is “spatially equal” to anotherGeometry.

-- OGC Simple Feature Access - Part 1: Common Architecture v1.2.1 (6.1.2.3)

To be "spatially equal" I would assume we need to consider both but would like other perspectives on this.

Visualization submodule...

Create a visualization framework for drawing all of GeoFeatures 2 shapes in 2D or 3D space. This should work into Playgrounds and outside.

It must be completely separate from the main Swift based GeoFeatuters 2 as an optional add on package. It must also not modify the main code line to achieve the goal.

It can however live in the same project as GeoFeatures 2.

Polygon does not resolve properly on OSX using Swift Package Manager (Swift PM)

The following code is required on in this scenario. This needs to be resolved.

#if (os(OSX) || os(iOS) || os(tvOS) || os(watchOS)) && SWIFT_PACKAGE
    /// TODO: Remove this after figuring out why there seems to be a symbol conflict (error: cannot specialize a non-generic definition) with another Polygon on Swift PM on Apple platforms only.
    import struct GeoFeatures.Polygon
#endif

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.