README.rdoc in postgis_adapter-0.2.1 vs README.rdoc in postgis_adapter-0.2.3
- old
+ new
@@ -9,36 +9,46 @@
Postgis Manual - http://postgis.refractions.net/documentation/manual-svn
*PostGIS and Rails 2+ only*.
-=== Install
+== Install
If you are using Spatial Adapter, *remove it first*.
-==== Dependencies
+=== Dependencies
- georuby
- postgres 8.3+
- postgis 1.3+
-==== As gem:
+=== As gem:
- sudo gem sources --add http://gems.github.com
- sudo gem install nofxx-postgis_adapter
-
+ sudo gem install postgis-adapter
+
+Rails:
+
+ config.gem "postgis_adapter"
+
+Github version:
+
+
+ sudo gem install nofxx-postgis_adapter --source http://gems.github.com
+
+Rails:
+
config.gem "nofxx-postgis_adapter", :lib => "postgis_adapter", :source => "http://gems.github.com"
-
-
-==== As plugin:
+
+=== As plugin:
+
script/plugin install git://github.com/nofxx/postgis_adapter.git
-=== How to Use
+== How to Use
Geometric columns in your ActiveRecord models now appear just like
any other column of other basic data types. They can also be dumped
in ruby schema mode and loaded in migrations the same way as columns
of basic types.
@@ -53,15 +63,15 @@
The plugin will get this information by itself.
Here is an example of PostGIS row creation and access, using the
model and the table defined above :
- pt = TablePoint.new(:data => "Hello!",:geom => Point.from_x_y(1,2))
- pt.save
- pt = TablePoint.first
- puts pt.geom.x
- => 1
+ pt = TablePoint.new(:data => "Hello!",:geom => Point.from_x_y(1,2))
+ pt.save
+ pt = TablePoint.first
+ puts pt.geom.x
+ => 1
== PostGIS Functions
Here are this fork additions. To use it:
@@ -76,11 +86,11 @@
@place = Poi.new( :data => **Point** )
@park = Park.new( :area => **Polygon** )
@street = Street.new( :line => **LineString** )
-=== Play!
+== Play!
@place.inside?(@park)
=> true
@place.in_bounds?(@park, 0.5) # margin
@@ -89,26 +99,31 @@
@place.outside?(@park)
@street.crosses?(@park)
@area.contains?(@place)
-
-Polygons:
+=== Polygons:
+
@park.area
=> 1345
@park.contains?(@point)
=> true
@park.overlaps?(@other_park)
=> false
-
-Line Strings:
+Supports transform (useful to transform SRID to UTM for area in Km^2)
+ @park.area(SRID)
+ => Area with new SRID
+
+
+=== Line Strings:
+
@street_east.intersects?(@street_west)
=> false
@street_central.length
=> 4508.53636
@@ -118,11 +133,11 @@
@street.length_spheroid
=> 4.40853636
-=== And for classes:
+=== Class Methods
City.close_to(@point)
=> [Array of cities in order by distance...
Street.close_to(@point)
@@ -156,11 +171,11 @@
interacts_with?
binary_equal?
same_as?
-Or use a (almost) postgis like notation:
+Or use a (almost) PostGIS like notation:
@area.bbox "<<", @point
@area.bbox "|>>", @point
@@ -198,19 +213,19 @@
Since this is a common case, it is the default. You have 2 ways to use
the find_by_*geom_column*: Either by passing a geometric object directly,
or passing an array with the 2 opposite corners of a bounding box
(with 2 or 3 coordinates depending of the dimension of the data).
- Park.find_by_geom(LineString.from_coordinates([[1.4,5.6],[2.7,8.9],[1.6,5.6]]))
+ Park.find_by_geom(LineString.from_coordinates([[1.4,5.6],[2.7,8.9],[1.6,5.6]]))
or
- Park.find_by_geom([[3,5.6],[19.98,5.9]])
+ Park.find_by_geom([[3,5.6],[19.98,5.9]])
In PostGIS, since you can only use operations with geometries with the same SRID, you can add a third element representing the SRID of the bounding box to the array. It is by default set to -1:
- Park.find_by_geom([[3,5.6],[19.98,5.9],123])
+ Park.find_by_geom([[3,5.6],[19.98,5.9],123])
== Database Tools
@@ -219,17 +234,17 @@
Here is an example of code for the creation of a table with a
geometric column in PostGIS, along with the addition of a spatial
index on the column :
ActiveRecord::Schema.define do
- create_table :places do |t|
+ create_table :places do |t|
t.string :name
- t.point :geom, :srid => 123, :with_z => true, :null => false
-
+ t.point :geom, :srid => 123, :with_z => true, :null => false
+
t.timestamps
end
- add_index :table_points, :geom, :spatial=>true
+ add_index :table_points, :geom, :spatial=>true
end
=== Fixtures
@@ -240,13 +255,13 @@
It works for both MySQL and PostGIS (although the string returned
is different for each database). You would use it like this, if
the geometric column is a point:
fixture:
- id: 1
- data: HELLO
- geom: <%= Point.from_x_y(123.5,321.9).to_yaml %>
+ id: 1
+ data: HELLO
+ geom: <%= Point.from_x_y(123.5,321.9).to_yaml %>
=== Annotate
If you are using annotate_models, check out this fork which adds geometrical annotations for PostgisAdapter and SpatialAdapter:
@@ -293,10 +308,10 @@
Postgis Adapter is released under the MIT license.
== Support
-Tested using rails 2.2.2 / postgresql 8.3.5 / postgis 1.3.3 / linux / osx
+Tested using rails 2.2.2/2.3.0 / postgresql 8.3.5 / postgis 1.3.3 / linux / osx
Any questions, enhancement proposals, bug notifications or corrections:
=== PostgisAdapter