01-02-2017 06:07 AM
Happy New year.
IHAC working with GeoMedia 2016. They wants to create points features along a line feature (streets) each every 100 meters
How could we get it?
Any idea about how to do it?
It doesn't matter Functional attribution or Spatial Modeler
Thanks a lot
01-02-2017 09:37 AM
I can think of several ways, unfortunately none of them is straightforward.
01-10-2017 02:39 PM
How to do with Functional Attributes
Densify a line so that a uniform distance (ie 50m) is maintained between points, except for corner vertices using functional attributes.
1 Create a functional attribute query that segments the polylines and also saves some properties called SEGMENTS_OF_LINES
segs = SEGMENTS(Input.Geometry) – geometry segments
length_seg = LENGTH(Output.segs, ProjectedMeas, Meter) – length of geometry segments
num_points_seg = INT(Output.length_seg/50) – number of full 50m sections
angle_segs = ANGLE(Output.segs, ProjectedMeas, Degree) – azimuth angle of segments
start_seg_pt = STARTPOINT(Output.segs) – starting point of segment
2 Create a functional attribute query that segments the SEGMENTS_OF_LINES query to extract the full 50m long sections, removing the remainder of line, called LONG_SEGMENTS_OF_LINES
long_seg = CREATEPOLYLINE(Input.start_seg_pt, MOVEBYDISTDIR(Input.start_seg_pt, 50*Input.num_points_seg, Input.angle_segs, ProjectedMeas))
3 Create a functional attribute query that uses DENSIFY on the LONG_SEGMENTS_OF_LINES query to get the desired 50m points.
long_seg_dens = POINTS(DENSIFY(Input.long_seg, 50, 24*(Input.num_points_seg+1)+20+1))
The DENSITY operator can have a mind of its own, but can be controlled if the Maxsize count in bytes can be determined. We know that there are (Input.num_points_seg+1) points and each point having 24 bytes( 3 x 8 bytes for X,Y and Z). A polyline also has 20 bytes for its header(guid and number of vertices). All you need to do is add 1 extra byte.
As the endpoint of the original polyline may not be divisable by 50m a Functional Attribute of ENDPOINT(Input.Geometry) can be used to get point if desired.