neo4j-spatial 0.0.1-java → 0.0.2-java

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,59 @@
1
+ #!/usr/bin/env jruby
2
+
3
+ # useful if being run inside a source code checkout
4
+ $: << 'lib'
5
+ $: << '../lib'
6
+
7
+ require 'rubygems'
8
+ require 'neo4j/spatial'
9
+
10
+ require 'neo4j/spatial/cmd'
11
+
12
+ $args = Neo4j::Spatial::Cmd.args
13
+
14
+ if $list === 'layers'
15
+ layers = Neo4j::Spatial::Layer.list
16
+ puts "Have #{layers.length} existing layers in the database:"
17
+ layers.each {|l| puts "\t#{l} (#{l.type_name})"}
18
+ puts
19
+ exit 0
20
+ end
21
+
22
+ if $help || $args.length < 1
23
+ puts <<-eos
24
+
25
+ usage: ./osm_random_trace.rb <-D storage_path> <-E dir> <-M #> <-l> <-h> layer <layers>
26
+ -D Use specified database location
27
+ -E Use specified export directory path (default '.')
28
+ -M Number of points to include in trace (default 1000)
29
+ -l List existing database layers
30
+ -h Display this help and exit
31
+ The layer should be a pre-existing OSM layer in the database created with OSM import.
32
+ Each layer specified will have a random point selected, and then all trace a route
33
+ from that point through the graph of connected ways. The entire route is then output
34
+ as an SHP and PNG export.
35
+
36
+ eos
37
+ exit
38
+ end
39
+
40
+ $shp_exporter = Neo4j::Spatial::ShapefileExporter.new :dir => $export
41
+ $png_exporter = Neo4j::Spatial::ImageExporter.new :dir => $export
42
+
43
+ puts "Finding random routes from #{$args.length} layers"
44
+
45
+ $args.each do |layer|
46
+ l = Neo4j::Spatial::Layer.find layer
47
+ if l.type_name === 'osm'
48
+ osm = l.dataset
49
+ puts "Have dataset: #{osm}"
50
+ osm.ways[0..1].each do |w|
51
+ puts "Have way: #{w}"
52
+ puts "Have way points: #{w.points}"
53
+ end
54
+ #puts "Exporting #{l} (#{l.type_name}) - #{l.index.layer_bounding_box}"
55
+ #$exporter.export l.name
56
+ else
57
+ puts "Layer #{l} does not appear to be an OSM layer"
58
+ end
59
+ end
@@ -18,6 +18,8 @@ module Neo4j
18
18
  end
19
19
  elsif arg =~ /\-E/
20
20
  $export = ARGV.shift
21
+ elsif arg =~ /\-M/
22
+ $limit = Math.max(ARGV.shift.to_i, 10)
21
23
  elsif arg =~ /\-F/
22
24
  $format = ARGV.shift
23
25
  elsif arg =~ /\-L/
@@ -5,8 +5,65 @@ java_import org.neo4j.gis.spatial.Constants
5
5
  java_import org.neo4j.gis.spatial.SpatialDatabaseService
6
6
  java_import org.neo4j.gis.spatial.osm.OSMGeometryEncoder
7
7
 
8
+ module Java
9
+ module OrgNeo4jGisSpatialOsm
10
+ class OSMDataset
11
+ def to_s
12
+ layers.map{|l| l.name}.join(', ')
13
+ end
14
+ def way_nodes
15
+ all_way_nodes
16
+ end
17
+ def ways
18
+ #all_way_nodes.map{|w| Neo4j::Spatial::OSMWay.new w}
19
+ Neo4j::Spatial::OSMWays.new(all_way_nodes)
20
+ end
21
+ end
22
+ end
23
+ end
8
24
  module Neo4j
9
25
  module Spatial
26
+ class OSMWay
27
+ def initialize(node)
28
+ @node = node
29
+ end
30
+ def first_point
31
+ first_point_proxy.outgoing(:NODE).first
32
+ end
33
+ def last_point
34
+ last_point_proxy.outgoing(:NODE).first
35
+ end
36
+ def first_point_proxy
37
+ @node.outgoing(:FIRST_NODE).first
38
+ end
39
+ def last_point_proxy
40
+ @node.outgoing(:LAST_NODE).first
41
+ end
42
+ def points
43
+ @node.methods.grep(/traver/).join(', ')
44
+ first_point_proxy.outgoing(:NEXT).depth(100000).map{|n| n.outgoing(:NODE).first}
45
+ end
46
+ def to_s
47
+ @node['name'] || @node.to_s
48
+ end
49
+ end
50
+ class OSMWays
51
+ attr_reader :nodes
52
+ def initialize(nodes)
53
+ @nodes = nodes
54
+ end
55
+ def each
56
+ @nodes.each{|n| yield OSMWay.new(n)}
57
+ end
58
+ def first
59
+ OSMWay.new @nodes.first
60
+ end
61
+ def [](index)
62
+ index.is_a?(Range) ?
63
+ @nodes.to_a[index].map{|n| OSMWay.new(n)} :
64
+ OSMWay.new(@nodes.to_a[index])
65
+ end
66
+ end
10
67
  class OSMLayer < Layer
11
68
  def initialize(layer_name,options={})
12
69
  super(layer_name, options.merge({
@@ -26,6 +83,7 @@ module Neo4j
26
83
  layer.add_dynamic_layer_on_way_tags(name.to_s, gtype, java.util.HashMap.new(options))
27
84
  end
28
85
  end
86
+ # List dynamic layers associated with this layer
29
87
  def list
30
88
  @layer.layer_names
31
89
  end
@@ -1,5 +1,5 @@
1
1
  module Neo4j
2
2
  module Spatial
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
5
5
  end
@@ -26,6 +26,6 @@ EOF
26
26
  s.extra_rdoc_files = %w( README.rdoc )
27
27
  s.rdoc_options = ["--quiet", "--title", "Neo4j-Spatial.rb", "--opname", "index.html", "--line-numbers", "--main", "README.rdoc", "--inline-source"]
28
28
  s.required_ruby_version = ">= 1.8.7"
29
- s.add_dependency('neo4j',">= 1.0.0")
29
+ s.add_dependency('neo4j',">= 1.0.0.beta.23")
30
30
  s.add_dependency('amanzi-sld',">= 0.0.1")
31
31
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: neo4j-spatial
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 1
10
- version: 0.0.1
9
+ - 2
10
+ version: 0.0.2
11
11
  platform: java
12
12
  authors:
13
13
  - Craig Taverner
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-03 00:00:00 +01:00
18
+ date: 2011-01-13 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -26,12 +26,14 @@ dependencies:
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- hash: 23
29
+ hash: 62196397
30
30
  segments:
31
31
  - 1
32
32
  - 0
33
33
  - 0
34
- version: 1.0.0
34
+ - beta
35
+ - 23
36
+ version: 1.0.0.beta.23
35
37
  type: :runtime
36
38
  version_requirements: *id001
37
39
  - !ruby/object:Gem::Dependency
@@ -105,6 +107,7 @@ files:
105
107
  - examples/map2.osm
106
108
  - examples/osm_layer.rb
107
109
  - examples/map.osm
110
+ - examples/osm_random_trace.rb
108
111
  - README.rdoc
109
112
  - CHANGELOG
110
113
  - CONTRIBUTORS