Module: PostgisFunctions::LineStringFunctions
- Defined in:
- lib/postgis_functions/common.rb
Overview
LINESTRING
Instance Method Summary collapse
-
#crosses?(other) ⇒ Boolean
Takes two geometry objects and returns TRUE if their intersection “spatially cross”, that is, the geometries have some, but not all interior points in common.
-
#end_point ⇒ Object
Returns geometry end point.
-
#interpolate_point(fraction) ⇒ Object
Returns a point interpolated along a line.
-
#length ⇒ Object
Returns the 2D length of the geometry if it is a linestring, multilinestring, ST_Curve, ST_MultiCurve.
-
#length_3d ⇒ Object
Returns the 3-dimensional or 2-dimensional length of the geometry if it is a linestring or multi-linestring.
-
#length_spheroid(spheroid = EARTH_SPHEROID) ⇒ Object
Calculates the length of a geometry on an ellipsoid.
-
#line_crossing_direction(other) ⇒ Object
Warning: PostGIS 1.4+.
-
#line_merge ⇒ Object
Returns a (set of) LineString(s) formed by sewing together a MULTILINESTRING.
-
#line_substring(s, e) ⇒ Object
Return a linestring being a substring of the input one starting and ending at the given fractions of total 2d length.
-
#locate_along_measure(measure) ⇒ Object
Return a derived geometry collection value with elements that match the specified measure.
-
#locate_between_measures(a, b) ⇒ Object
Return a derived geometry collection value with elements that match the specified range of measures inclusively.
-
#locate_point(point) ⇒ Object
Returns a float between 0 and 1 representing the location of the closest point on LineString to the given Point, as a fraction of total 2d line length.
-
#num_points ⇒ Object
Return the number of points of the geometry.
-
#start_point ⇒ Object
Returns geometry start point.
Instance Method Details
#crosses?(other) ⇒ Boolean
Takes two geometry objects and returns TRUE if their intersection “spatially cross”, that is, the geometries have some, but not all interior points in common. The intersection of the interiors of the geometries must not be the empty set and must have a dimensionality less than the the maximum dimension of the two input geometries. Additionally, the intersection of the two geometries must not equal either of the source geometries. Otherwise, it returns FALSE.
Returns Boolean ST_Crosses(geometry g1, geometry g2);
623 624 625 |
# File 'lib/postgis_functions/common.rb', line 623 def crosses? other postgis_calculate(:crosses, [self, other]) end |
#end_point ⇒ Object
Returns geometry end point.
607 608 609 |
# File 'lib/postgis_functions/common.rb', line 607 def end_point postgis_calculate(:endpoint, self) end |
#interpolate_point(fraction) ⇒ Object
Returns a point interpolated along a line. First argument must be a LINESTRING. Second argument is a float8 between 0 and 1 representing fraction of total linestring length the point has to be located.
See ST_Line_Locate_Point for computing the line location nearest to a Point.
Returns geometry ST_Line_Interpolate_Point(geometry a_linestring, float a_fraction);
684 685 686 |
# File 'lib/postgis_functions/common.rb', line 684 def interpolate_point(fraction) postgis_calculate(:line_interpolate_point, self, fraction) end |
#length ⇒ Object
Returns the 2D length of the geometry if it is a linestring, multilinestring, ST_Curve, ST_MultiCurve. 0 is returned for areal geometries. For areal geometries use ‘perimeter’. Measurements are in the units of the spatial reference system of the geometry.
Returns Float
551 552 553 |
# File 'lib/postgis_functions/common.rb', line 551 def length postgis_calculate(:length, self).to_f end |
#length_3d ⇒ Object
Returns the 3-dimensional or 2-dimensional length of the geometry if it is a linestring or multi-linestring. For 2-d lines it will just return the 2-d length (same as ‘length’)
Returns Float
562 563 564 |
# File 'lib/postgis_functions/common.rb', line 562 def length_3d postgis_calculate(:length3d, self).to_f end |
#length_spheroid(spheroid = EARTH_SPHEROID) ⇒ Object
Calculates the length of a geometry on an ellipsoid. This is useful if the coordinates of the geometry are in longitude/latitude and a length is desired without reprojection. The ellipsoid is a separate database type and can be constructed as follows:
SPHEROID[<NAME>,<SEMI-MAJOR AXIS>,<INVERSE FLATTENING>]
Example:
SPHEROID["GRS_1980",6378137,298.257222101]
Defaults to:
SPHEROID["IERS_2003",6378136.6,298.25642]
Returns Float length_spheroid(geometry linestring, spheroid);
583 584 585 |
# File 'lib/postgis_functions/common.rb', line 583 def length_spheroid(spheroid = EARTH_SPHEROID) postgis_calculate(:length_spheroid, self, spheroid).to_f end |
#line_crossing_direction(other) ⇒ Object
Warning: PostGIS 1.4+
Return crossing direction
631 632 633 |
# File 'lib/postgis_functions/common.rb', line 631 def line_crossing_direction(other) postgis_calculate(:lineCrossingDirection, [self, other]) end |
#line_merge ⇒ Object
Returns a (set of) LineString(s) formed by sewing together a MULTILINESTRING.
Only use with MULTILINESTRING/LINESTRINGs. If you feed a polygon or geometry collection into this function, it will return an empty GEOMETRYCOLLECTION
Returns geometry ST_LineMerge(geometry amultilinestring);
719 720 721 |
# File 'lib/postgis_functions/common.rb', line 719 def line_merge postgis_calculate(:LineMerge, self, { :stcollect => self}) end |
#line_substring(s, e) ⇒ Object
Return a linestring being a substring of the input one starting and ending at the given fractions of total 2d length. Second and third arguments are float8 values between 0 and 1. This only works with LINESTRINGs. To use with contiguous MULTILINESTRINGs use in conjunction with ST_LineMerge.
If ‘start’ and ‘end’ have the same value this is equivalent to ‘interpolate_point’.
See ‘locate_point’ for computing the line location nearest to a Point.
Returns geometry ST_Line_Substring(geometry a_linestring, float startfraction, float endfraction);
700 701 702 |
# File 'lib/postgis_functions/common.rb', line 700 def line_substring(s,e) postgis_calculate(:line_substring, self, [s, e]) end |
#locate_along_measure(measure) ⇒ Object
Return a derived geometry collection value with elements that match the specified measure. Polygonal elements are not supported.
Semantic is specified by: ISO/IEC CD 13249-3:200x(E) - Text for Continuation CD Editing Meeting
Returns geometry ST_Locate_Along_Measure(geometry ageom_with_measure, float a_measure);
659 660 661 |
# File 'lib/postgis_functions/common.rb', line 659 def locate_along_measure(measure) postgis_calculate(:locate_along_measure, self, measure) end |
#locate_between_measures(a, b) ⇒ Object
Return a derived geometry collection value with elements that match the specified range of measures inclusively. Polygonal elements are not supported.
Semantic is specified by: ISO/IEC CD 13249-3:200x(E) - Text for Continuation CD Editing Meeting
Returns geometry ST_Locate_Between_Measures(geometry geomA, float measure_start, float measure_end);
671 672 673 |
# File 'lib/postgis_functions/common.rb', line 671 def locate_between_measures(a, b) postgis_calculate(:locate_between_measures, self, [a,b]) end |
#locate_point(point) ⇒ Object
Returns a float between 0 and 1 representing the location of the closest point on LineString to the given Point, as a fraction of total 2d line length.
You can use the returned location to extract a Point (ST_Line_Interpolate_Point) or a substring (ST_Line_Substring).
This is useful for approximating numbers of addresses.
Returns float (0 to 1) ST_Line_Locate_Point(geometry a_linestring, geometry a_point);
646 647 648 |
# File 'lib/postgis_functions/common.rb', line 646 def locate_point point postgis_calculate(:line_locate_point, [self, point]).to_f end |
#num_points ⇒ Object
Return the number of points of the geometry. PostGis ST_NumPoints does not work as nov/08
Returns Integer ST_NPoints(geometry g1);
593 594 595 |
# File 'lib/postgis_functions/common.rb', line 593 def num_points postgis_calculate(:npoints, self).to_i end |
#start_point ⇒ Object
Returns geometry start point.
600 601 602 |
# File 'lib/postgis_functions/common.rb', line 600 def start_point postgis_calculate(:startpoint, self) end |