tonystone / geofeatures Goto Github PK
View Code? Open in Web Editor NEWA lightweight, high performance geometry library.
License: Apache License 2.0
A lightweight, high performance geometry library.
License: Apache License 2.0
The current example app in the Example directory is just a shell built from the cocoapod template. This application needs to be finished to help show the use of GeoFeatures.
The demo app could store various shapes in WKT txt files, parse them and possibly show them on a map or other view. Adding functionality that demonstrates the algorithms such as within (could be tap on the image on the screen) and union_ would be nice also but could wait until after a basic app is in place.
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
Create a directory structure in the gh-pages branch with an index.html landing page that has a link to the current docs and an index of previous versions.
/index.html
/doxy/1.0.0
/doxy/1.0.1
/doxy/1.1.0
Currently we have limited negative test coverage. Areas of particular need are;
All the file links are getting 404 errors when pushed to the gh-pages branch. They work perfectly when run from the local disk.
Implement the intersects: (GFGeometry *) other mthod / operation on GFGeometry.
Need a function to return a collection of outer 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.
Clang 3.1 introduced "Indexed Subscriptiong" to the Objective-C language. This feature allows changes the Objective-C syntax for dictionary and array sub scripting from this:
NSDictionary *dictionary = [NSDictionary dictionaryWithObject:[NSNumber numberWithInteger:128] forKey:@"foo"];
NSArray * array = [NSArray arrayWithObjects: @"10", @"20", @"30"];
...to this:
NSDictionary * dictionary = @{@"foo": @128};
NSArray * array = @[@"10", @"20", @"30"];
Classes that require adding this feature are:
GFMultiPoint
GFMultiLineString
GFMultiPolygon
GFGeometryCollection
The GFPoint page does not show an #import statement and it does not show any description for it.
Doxygen is generating incorrect import statements for the public headers. The import statements are must be fully qualified and are not.
The current documentation set reads:
#import <GFGeometry.h>
The correct import is:
#import <GeoFeatures/GFGeometry.h>
Some private methods are currently visible in the CocoaPod, this should be corrected. For example, protected methods are currently visible.
GFLineString #toGeoJSONGeometry is returning Point for the type instead of LineString.
Currently this method defaults to the super class implementation.
Currently there are few accessors for accessing the various parts of each geometry. To take the example in the title GFPolygon requires an innerRings and outRings method to return the rings of the polyygon.
Currently, outside of constructors and algorithms, GeoFeatures is readonly. Mutable versions of the classes should be created.
GFMultiPoint #toGeoJSONGeometry is returning MultiPolygon for the type instead of MutiPoint.
The internal ReadWKT routine is missing a regex for MULTIPOLYGON so it can't parse it. It simply skips it.
Add the ability to call the library from Swift.
Detail to follow.
Implement GFGeometryCollection #toGeoJSONGeometry, it's currently chaining to super.
Fast enumeration is used often in Objective-c and since the multi types are simple collection classes they should implement this feature. Classes that should get this are:
GFMultiPoint
GFMultiLineString
GFMultiPolygon
GFGeometryCollection
Documentation "Class List" lists all classes under G since this is the prefix.
IGNORE_PREFIX should be added to the Doxyfile to force it to index classes ignoring the prefix.
IGNORE_PREFIX = GF
Add build and test targets for OSX.
After investigation this way be caused by CocoaDocs failing on the following error pulled from this link
http://api.cocoadocs.org:4567/error/GeoFeatures/1.2.0
report_error({"message":"Argument list too long - du -skc /Users/maddern/dev/cocoadocs.org/activity/download/GeoFeatures/1.2.0/GeoFeatures/LICENSE /Users/maddern/dev/cocoadocs.org/activity/download/GeoFeatures/1.2.0/GeoFeatures/GeoFeatures/boost/algorithm/minmax_element.hpp ...
/Users/maddern/dev/cocoadocs.org/activity/download/GeoFeatures/1.2.0/GeoFeatures/LICENSE_BOOST_1_0 /Users/maddern/dev/cocoadocs.org/activity/download/GeoFeatures/1.2.0/GeoFeatures/README.md","trace":["/Users/maddern/dev/cocoadocs.org/classes/stats_generator.rb:95:in ``'","/Users/maddern/dev/cocoadocs.org/classes/stats_generator.rb:95:in `generated_install_size'","/Users/maddern/dev/cocoadocs.org/classes/stats_generator.rb:26:in `upload'","/Users/maddern/dev/cocoadocs.org/./cocoadocs.rb:484:in `document_spec'","/Users/maddern/dev/cocoadocs.org/./cocoadocs.rb:532:in `document_spec_at_path'","/Users/maddern/dev/cocoadocs.org/./cocoadocs.rb:165:in `block in doc'","/Users/maddern/dev/cocoadocs.org/./cocoadocs.rb:160:in `each'","/Users/maddern/dev/cocoadocs.org/./cocoadocs.rb:160:in `doc'","/Users/maddern/dev/cocoadocs.org/./cocoadocs.rb:232:in `block in cocoadocs_url'","/Users/maddern/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/open-uri.rb:153:in `open_uri'","/Users/maddern/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/open-uri.rb:704:in `open'","/Users/maddern/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/open-uri.rb:34:in `open'","/Users/maddern/dev/cocoadocs.org/./cocoadocs.rb:229:in `cocoadocs_url'","/Users/maddern/dev/cocoadocs.org/./cocoadocs.rb:180:in `cocoadocs'","/Users/maddern/dev/cocoadocs.org/./cocoadocs.rb:115:in `initialize'","/Users/maddern/dev/cocoadocs.org/./cocoadocs.rb:551:in `new'","/Users/maddern/dev/cocoadocs.org/./cocoadocs.rb:551:in `<main>'"]}
This is due to CocoaDocs trying to document all the internal code and boost which it should not.
Please see the following link for trouble shooting http://orta.io/rebase/why-cant-i-expand/.
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.
While building GeoFeatures via Cocoapods 1.0.X, I'm seeing errors that look like this:
In file included from /Users/me/Source/climate-iphone/Pods/GeoFeatures/GeoFeatures/GFBox.mm:27:
In file included from /Users/meSource/climate-iphone/Pods/GeoFeatures/GeoFeatures/internal/geofeatures/Box.hpp:30:
/Users/me/Source/climate-iphone/Pods/GeoFeatures/GeoFeatures/internal/geofeatures/Point.hpp:31:10: fatal error: 'boost/mpl/int.hpp' file not found
#include <boost/mpl/int.hpp>
^
1 error generated.
To get around this, I need to go into the Pods -> GeoFeatures target settings and make two changes: 1) set "Always Search User Paths" to true and 2) add in a path to the Pod/GeoFeatures folder and set it to "recursive". This probably isn't the correct long term solution.
Is there a better solution that can be done?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.