Circular Linestring: Make a new start and endpoint alonge the line (with normalized distance) via PostGISAdd a polygon to PostGis from Google MapsPostgis reorder mixed up linestring chunks / max_segment_length(linestring)?Problem with matching a buffer in Openlayers and the same buffer in PostGIS queryPostgresql (soln would be basic SQL I think): ORDER by distance to a point and return those distances in array pairs w/ the full recordsDetermine which points are contained inside a given polygonCartoDB (PostGIS) near function (distance) points to polygonsHow to segregate dumped points?Detect and measure loop at end of linestringLine to point conversion with start point and end point detection?LineLocate a sequence of points, preserving order
Is there a minimum number of transactions in a block?
What do you call a Matrix-like slowdown and camera movement effect?
The use of multiple foreign keys on same column in SQL Server
Are tax years 2016 & 2017 back taxes deductible for tax year 2018?
Is Social Media Science Fiction?
Japan - Plan around max visa duration
How is it possible for user's password to be changed after storage was encrypted? (on OS X, Android)
Download, install and reboot computer at night if needed
whey we use polarized capacitor?
XeLaTeX and pdfLaTeX ignore hyphenation
Copenhagen passport control - US citizen
N.B. ligature in Latex
A Journey Through Space and Time
Draw simple lines in Inkscape
Schwarzchild Radius of the Universe
Why are 150k or 200k jobs considered good when there are 300k+ births a month?
Can I make popcorn with any corn?
Why is an old chain unsafe?
Pronouncing Dictionary.com's W.O.D "vade mecum" in English
What would happen to a modern skyscraper if it rains micro blackholes?
Set-theoretical foundations of Mathematics with only bounded quantifiers
I see my dog run
What defenses are there against being summoned by the Gate spell?
How long does it take to type this?
Circular Linestring: Make a new start and endpoint alonge the line (with normalized distance) via PostGIS
Add a polygon to PostGis from Google MapsPostgis reorder mixed up linestring chunks / max_segment_length(linestring)?Problem with matching a buffer in Openlayers and the same buffer in PostGIS queryPostgresql (soln would be basic SQL I think): ORDER by distance to a point and return those distances in array pairs w/ the full recordsDetermine which points are contained inside a given polygonCartoDB (PostGIS) near function (distance) points to polygonsHow to segregate dumped points?Detect and measure loop at end of linestringLine to point conversion with start point and end point detection?LineLocate a sequence of points, preserving order
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I want swap/change the order of the coordinates inside a circular string which should be easy as it is a circle
-- circular linestring --
CIRCULARSTRING(5 2,-3 1.999999, -2 1, -4 2, 5 2)
to something like
CIRCULARSTRING(-3 1.999999, -2 1, -4 2, 5 2, -3 1.999999)
the ideal solution would also contain a get me the normalize distance on some point of the line like i want the point at 0.6 to be my new start and end point.
Are there any options to do that in PostGIS in a SQL Statement?
postgis sql
|
show 1 more comment
I want swap/change the order of the coordinates inside a circular string which should be easy as it is a circle
-- circular linestring --
CIRCULARSTRING(5 2,-3 1.999999, -2 1, -4 2, 5 2)
to something like
CIRCULARSTRING(-3 1.999999, -2 1, -4 2, 5 2, -3 1.999999)
the ideal solution would also contain a get me the normalize distance on some point of the line like i want the point at 0.6 to be my new start and end point.
Are there any options to do that in PostGIS in a SQL Statement?
postgis sql
well, you could simply rebuild those cirlces. that will guarantee the start and end point will be at pi/2 rad, to then be able to rotate the circle with full control. what is that normalized distance all about?
– ThingumaBob
Aug 1 '18 at 14:41
I am trying to do that. The normailized distance is a position on the line (measured from the start point of the line) where it is described with 0 as start point and 1 as endpoint. postgis.net/docs/ST_LineSubstring.html I use this to split the line.
– blackgis
Aug 2 '18 at 8:05
ST_LineInterpolatePoint
returns a point geometry at a given fraction of linelength. do you have centroids of those circles? it might be easier to reconstruct the circle with the boundary of a buffer and rotate that.
– ThingumaBob
Aug 2 '18 at 11:17
1
ST_LineInterpolationPoint, ST_LineSubstring as any other function from the Linear Referencing system of PostGIS will only work with LINESTRINGs (not CIRCULARSTRINGs)
– Carlos MSF
Aug 2 '18 at 11:57
@CarlosMSF true, I do assume that one will convert between types withST_LineToCurve
/ST_CurveToLine
!
– ThingumaBob
Aug 2 '18 at 12:43
|
show 1 more comment
I want swap/change the order of the coordinates inside a circular string which should be easy as it is a circle
-- circular linestring --
CIRCULARSTRING(5 2,-3 1.999999, -2 1, -4 2, 5 2)
to something like
CIRCULARSTRING(-3 1.999999, -2 1, -4 2, 5 2, -3 1.999999)
the ideal solution would also contain a get me the normalize distance on some point of the line like i want the point at 0.6 to be my new start and end point.
Are there any options to do that in PostGIS in a SQL Statement?
postgis sql
I want swap/change the order of the coordinates inside a circular string which should be easy as it is a circle
-- circular linestring --
CIRCULARSTRING(5 2,-3 1.999999, -2 1, -4 2, 5 2)
to something like
CIRCULARSTRING(-3 1.999999, -2 1, -4 2, 5 2, -3 1.999999)
the ideal solution would also contain a get me the normalize distance on some point of the line like i want the point at 0.6 to be my new start and end point.
Are there any options to do that in PostGIS in a SQL Statement?
postgis sql
postgis sql
asked Aug 1 '18 at 12:17
blackgisblackgis
19711
19711
well, you could simply rebuild those cirlces. that will guarantee the start and end point will be at pi/2 rad, to then be able to rotate the circle with full control. what is that normalized distance all about?
– ThingumaBob
Aug 1 '18 at 14:41
I am trying to do that. The normailized distance is a position on the line (measured from the start point of the line) where it is described with 0 as start point and 1 as endpoint. postgis.net/docs/ST_LineSubstring.html I use this to split the line.
– blackgis
Aug 2 '18 at 8:05
ST_LineInterpolatePoint
returns a point geometry at a given fraction of linelength. do you have centroids of those circles? it might be easier to reconstruct the circle with the boundary of a buffer and rotate that.
– ThingumaBob
Aug 2 '18 at 11:17
1
ST_LineInterpolationPoint, ST_LineSubstring as any other function from the Linear Referencing system of PostGIS will only work with LINESTRINGs (not CIRCULARSTRINGs)
– Carlos MSF
Aug 2 '18 at 11:57
@CarlosMSF true, I do assume that one will convert between types withST_LineToCurve
/ST_CurveToLine
!
– ThingumaBob
Aug 2 '18 at 12:43
|
show 1 more comment
well, you could simply rebuild those cirlces. that will guarantee the start and end point will be at pi/2 rad, to then be able to rotate the circle with full control. what is that normalized distance all about?
– ThingumaBob
Aug 1 '18 at 14:41
I am trying to do that. The normailized distance is a position on the line (measured from the start point of the line) where it is described with 0 as start point and 1 as endpoint. postgis.net/docs/ST_LineSubstring.html I use this to split the line.
– blackgis
Aug 2 '18 at 8:05
ST_LineInterpolatePoint
returns a point geometry at a given fraction of linelength. do you have centroids of those circles? it might be easier to reconstruct the circle with the boundary of a buffer and rotate that.
– ThingumaBob
Aug 2 '18 at 11:17
1
ST_LineInterpolationPoint, ST_LineSubstring as any other function from the Linear Referencing system of PostGIS will only work with LINESTRINGs (not CIRCULARSTRINGs)
– Carlos MSF
Aug 2 '18 at 11:57
@CarlosMSF true, I do assume that one will convert between types withST_LineToCurve
/ST_CurveToLine
!
– ThingumaBob
Aug 2 '18 at 12:43
well, you could simply rebuild those cirlces. that will guarantee the start and end point will be at pi/2 rad, to then be able to rotate the circle with full control. what is that normalized distance all about?
– ThingumaBob
Aug 1 '18 at 14:41
well, you could simply rebuild those cirlces. that will guarantee the start and end point will be at pi/2 rad, to then be able to rotate the circle with full control. what is that normalized distance all about?
– ThingumaBob
Aug 1 '18 at 14:41
I am trying to do that. The normailized distance is a position on the line (measured from the start point of the line) where it is described with 0 as start point and 1 as endpoint. postgis.net/docs/ST_LineSubstring.html I use this to split the line.
– blackgis
Aug 2 '18 at 8:05
I am trying to do that. The normailized distance is a position on the line (measured from the start point of the line) where it is described with 0 as start point and 1 as endpoint. postgis.net/docs/ST_LineSubstring.html I use this to split the line.
– blackgis
Aug 2 '18 at 8:05
ST_LineInterpolatePoint
returns a point geometry at a given fraction of linelength. do you have centroids of those circles? it might be easier to reconstruct the circle with the boundary of a buffer and rotate that.– ThingumaBob
Aug 2 '18 at 11:17
ST_LineInterpolatePoint
returns a point geometry at a given fraction of linelength. do you have centroids of those circles? it might be easier to reconstruct the circle with the boundary of a buffer and rotate that.– ThingumaBob
Aug 2 '18 at 11:17
1
1
ST_LineInterpolationPoint, ST_LineSubstring as any other function from the Linear Referencing system of PostGIS will only work with LINESTRINGs (not CIRCULARSTRINGs)
– Carlos MSF
Aug 2 '18 at 11:57
ST_LineInterpolationPoint, ST_LineSubstring as any other function from the Linear Referencing system of PostGIS will only work with LINESTRINGs (not CIRCULARSTRINGs)
– Carlos MSF
Aug 2 '18 at 11:57
@CarlosMSF true, I do assume that one will convert between types with
ST_LineToCurve
/ST_CurveToLine
!– ThingumaBob
Aug 2 '18 at 12:43
@CarlosMSF true, I do assume that one will convert between types with
ST_LineToCurve
/ST_CurveToLine
!– ThingumaBob
Aug 2 '18 at 12:43
|
show 1 more comment
1 Answer
1
active
oldest
votes
To reverse the order of the vertices within the CIRCULARSTRING I would suggest to use ST_Reverse, but it actually doesn't work with CIRCULARSTRING: it returns no error, but returns the original geometry unaltered.
Therefore, I suggest this workaround:
- Convert the geometry to text - ST_AsText
- Replace the CIRCULARSTRING for LINESTRING in the WKT of the geometry
- Create a LINESTRING from the text - ST_GeomFromText
- Reverse the LINESTRING - ST_Reverse
- Convert the resulting geometry to text - ST_AsText
- Replace the LINESTRING for CIRCULARSTRING in the WKT of the geometry
- Create a CIRCULARSTRING from the text - ST_GeomFromText
Here's the sample code:
WITH t AS
(
SELECT ST_GeomFromText('CIRCULARSTRING(5 2,-3 1.999999, -2 1, -4 2, 5 2)') AS geom
)
SELECT
ST_AsText(
ST_GeomFromText(
REPLACE(ST_AsText(
ST_Reverse(
ST_GeomFromText(REPLACE(ST_AsText(geom), 'CIRCULARSTRING', 'LINESTRING'))
)
), 'LINESTRING', 'CIRCULARSTRING')
)
)
FROM t
Result from the query above: "CIRCULARSTRING(5 2,-4 2,-2 1,-3 1.999999,5 2)"
Awesome input, but reverse is not my question at all. The question is how i can make a new start and endpoint from a given CIRCULARSTRING. The given CIRCULARSTRING has already a start and end point, like in my example (CIRCULARSTRING(5 2,-3 1.999999, -2 1, -4 2, 5 2)) the start and endpoint would be 5 2(first index position) and 5 2 (last index position). As it is circular i thought there is maybe an easy solution to define a new start and end point at some normalized (0-1) distance from the first index position.
– blackgis
Aug 3 '18 at 12:16
1
In your question, the first line says that one of the objectives was to "change the order of the coordinates inside a circular string", which I interpreted as reversing the geometry. As for the extracting part of the geometry, as referred in previous comments, there are no native functions that would work with CIRCULARSTRING. You would have to convert it into linestring (check ST_CurveToLine) to then be able to use ST_LineSubstring. If you want to work only with the original vertices and put then in a different order, try to convert the coordinates to an array
– Carlos MSF
Aug 3 '18 at 14:19
Thanks for pointing that out, i will and have to use the coordinates as it seems that there is no way around, i just wanted to avoid extra steps when there could be a fency postgis function for that
– blackgis
Aug 3 '18 at 15:48
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "79"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f291353%2fcircular-linestring-make-a-new-start-and-endpoint-alonge-the-line-with-normali%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
To reverse the order of the vertices within the CIRCULARSTRING I would suggest to use ST_Reverse, but it actually doesn't work with CIRCULARSTRING: it returns no error, but returns the original geometry unaltered.
Therefore, I suggest this workaround:
- Convert the geometry to text - ST_AsText
- Replace the CIRCULARSTRING for LINESTRING in the WKT of the geometry
- Create a LINESTRING from the text - ST_GeomFromText
- Reverse the LINESTRING - ST_Reverse
- Convert the resulting geometry to text - ST_AsText
- Replace the LINESTRING for CIRCULARSTRING in the WKT of the geometry
- Create a CIRCULARSTRING from the text - ST_GeomFromText
Here's the sample code:
WITH t AS
(
SELECT ST_GeomFromText('CIRCULARSTRING(5 2,-3 1.999999, -2 1, -4 2, 5 2)') AS geom
)
SELECT
ST_AsText(
ST_GeomFromText(
REPLACE(ST_AsText(
ST_Reverse(
ST_GeomFromText(REPLACE(ST_AsText(geom), 'CIRCULARSTRING', 'LINESTRING'))
)
), 'LINESTRING', 'CIRCULARSTRING')
)
)
FROM t
Result from the query above: "CIRCULARSTRING(5 2,-4 2,-2 1,-3 1.999999,5 2)"
Awesome input, but reverse is not my question at all. The question is how i can make a new start and endpoint from a given CIRCULARSTRING. The given CIRCULARSTRING has already a start and end point, like in my example (CIRCULARSTRING(5 2,-3 1.999999, -2 1, -4 2, 5 2)) the start and endpoint would be 5 2(first index position) and 5 2 (last index position). As it is circular i thought there is maybe an easy solution to define a new start and end point at some normalized (0-1) distance from the first index position.
– blackgis
Aug 3 '18 at 12:16
1
In your question, the first line says that one of the objectives was to "change the order of the coordinates inside a circular string", which I interpreted as reversing the geometry. As for the extracting part of the geometry, as referred in previous comments, there are no native functions that would work with CIRCULARSTRING. You would have to convert it into linestring (check ST_CurveToLine) to then be able to use ST_LineSubstring. If you want to work only with the original vertices and put then in a different order, try to convert the coordinates to an array
– Carlos MSF
Aug 3 '18 at 14:19
Thanks for pointing that out, i will and have to use the coordinates as it seems that there is no way around, i just wanted to avoid extra steps when there could be a fency postgis function for that
– blackgis
Aug 3 '18 at 15:48
add a comment |
To reverse the order of the vertices within the CIRCULARSTRING I would suggest to use ST_Reverse, but it actually doesn't work with CIRCULARSTRING: it returns no error, but returns the original geometry unaltered.
Therefore, I suggest this workaround:
- Convert the geometry to text - ST_AsText
- Replace the CIRCULARSTRING for LINESTRING in the WKT of the geometry
- Create a LINESTRING from the text - ST_GeomFromText
- Reverse the LINESTRING - ST_Reverse
- Convert the resulting geometry to text - ST_AsText
- Replace the LINESTRING for CIRCULARSTRING in the WKT of the geometry
- Create a CIRCULARSTRING from the text - ST_GeomFromText
Here's the sample code:
WITH t AS
(
SELECT ST_GeomFromText('CIRCULARSTRING(5 2,-3 1.999999, -2 1, -4 2, 5 2)') AS geom
)
SELECT
ST_AsText(
ST_GeomFromText(
REPLACE(ST_AsText(
ST_Reverse(
ST_GeomFromText(REPLACE(ST_AsText(geom), 'CIRCULARSTRING', 'LINESTRING'))
)
), 'LINESTRING', 'CIRCULARSTRING')
)
)
FROM t
Result from the query above: "CIRCULARSTRING(5 2,-4 2,-2 1,-3 1.999999,5 2)"
Awesome input, but reverse is not my question at all. The question is how i can make a new start and endpoint from a given CIRCULARSTRING. The given CIRCULARSTRING has already a start and end point, like in my example (CIRCULARSTRING(5 2,-3 1.999999, -2 1, -4 2, 5 2)) the start and endpoint would be 5 2(first index position) and 5 2 (last index position). As it is circular i thought there is maybe an easy solution to define a new start and end point at some normalized (0-1) distance from the first index position.
– blackgis
Aug 3 '18 at 12:16
1
In your question, the first line says that one of the objectives was to "change the order of the coordinates inside a circular string", which I interpreted as reversing the geometry. As for the extracting part of the geometry, as referred in previous comments, there are no native functions that would work with CIRCULARSTRING. You would have to convert it into linestring (check ST_CurveToLine) to then be able to use ST_LineSubstring. If you want to work only with the original vertices and put then in a different order, try to convert the coordinates to an array
– Carlos MSF
Aug 3 '18 at 14:19
Thanks for pointing that out, i will and have to use the coordinates as it seems that there is no way around, i just wanted to avoid extra steps when there could be a fency postgis function for that
– blackgis
Aug 3 '18 at 15:48
add a comment |
To reverse the order of the vertices within the CIRCULARSTRING I would suggest to use ST_Reverse, but it actually doesn't work with CIRCULARSTRING: it returns no error, but returns the original geometry unaltered.
Therefore, I suggest this workaround:
- Convert the geometry to text - ST_AsText
- Replace the CIRCULARSTRING for LINESTRING in the WKT of the geometry
- Create a LINESTRING from the text - ST_GeomFromText
- Reverse the LINESTRING - ST_Reverse
- Convert the resulting geometry to text - ST_AsText
- Replace the LINESTRING for CIRCULARSTRING in the WKT of the geometry
- Create a CIRCULARSTRING from the text - ST_GeomFromText
Here's the sample code:
WITH t AS
(
SELECT ST_GeomFromText('CIRCULARSTRING(5 2,-3 1.999999, -2 1, -4 2, 5 2)') AS geom
)
SELECT
ST_AsText(
ST_GeomFromText(
REPLACE(ST_AsText(
ST_Reverse(
ST_GeomFromText(REPLACE(ST_AsText(geom), 'CIRCULARSTRING', 'LINESTRING'))
)
), 'LINESTRING', 'CIRCULARSTRING')
)
)
FROM t
Result from the query above: "CIRCULARSTRING(5 2,-4 2,-2 1,-3 1.999999,5 2)"
To reverse the order of the vertices within the CIRCULARSTRING I would suggest to use ST_Reverse, but it actually doesn't work with CIRCULARSTRING: it returns no error, but returns the original geometry unaltered.
Therefore, I suggest this workaround:
- Convert the geometry to text - ST_AsText
- Replace the CIRCULARSTRING for LINESTRING in the WKT of the geometry
- Create a LINESTRING from the text - ST_GeomFromText
- Reverse the LINESTRING - ST_Reverse
- Convert the resulting geometry to text - ST_AsText
- Replace the LINESTRING for CIRCULARSTRING in the WKT of the geometry
- Create a CIRCULARSTRING from the text - ST_GeomFromText
Here's the sample code:
WITH t AS
(
SELECT ST_GeomFromText('CIRCULARSTRING(5 2,-3 1.999999, -2 1, -4 2, 5 2)') AS geom
)
SELECT
ST_AsText(
ST_GeomFromText(
REPLACE(ST_AsText(
ST_Reverse(
ST_GeomFromText(REPLACE(ST_AsText(geom), 'CIRCULARSTRING', 'LINESTRING'))
)
), 'LINESTRING', 'CIRCULARSTRING')
)
)
FROM t
Result from the query above: "CIRCULARSTRING(5 2,-4 2,-2 1,-3 1.999999,5 2)"
edited Aug 2 '18 at 12:09
answered Aug 2 '18 at 11:53
Carlos MSFCarlos MSF
427215
427215
Awesome input, but reverse is not my question at all. The question is how i can make a new start and endpoint from a given CIRCULARSTRING. The given CIRCULARSTRING has already a start and end point, like in my example (CIRCULARSTRING(5 2,-3 1.999999, -2 1, -4 2, 5 2)) the start and endpoint would be 5 2(first index position) and 5 2 (last index position). As it is circular i thought there is maybe an easy solution to define a new start and end point at some normalized (0-1) distance from the first index position.
– blackgis
Aug 3 '18 at 12:16
1
In your question, the first line says that one of the objectives was to "change the order of the coordinates inside a circular string", which I interpreted as reversing the geometry. As for the extracting part of the geometry, as referred in previous comments, there are no native functions that would work with CIRCULARSTRING. You would have to convert it into linestring (check ST_CurveToLine) to then be able to use ST_LineSubstring. If you want to work only with the original vertices and put then in a different order, try to convert the coordinates to an array
– Carlos MSF
Aug 3 '18 at 14:19
Thanks for pointing that out, i will and have to use the coordinates as it seems that there is no way around, i just wanted to avoid extra steps when there could be a fency postgis function for that
– blackgis
Aug 3 '18 at 15:48
add a comment |
Awesome input, but reverse is not my question at all. The question is how i can make a new start and endpoint from a given CIRCULARSTRING. The given CIRCULARSTRING has already a start and end point, like in my example (CIRCULARSTRING(5 2,-3 1.999999, -2 1, -4 2, 5 2)) the start and endpoint would be 5 2(first index position) and 5 2 (last index position). As it is circular i thought there is maybe an easy solution to define a new start and end point at some normalized (0-1) distance from the first index position.
– blackgis
Aug 3 '18 at 12:16
1
In your question, the first line says that one of the objectives was to "change the order of the coordinates inside a circular string", which I interpreted as reversing the geometry. As for the extracting part of the geometry, as referred in previous comments, there are no native functions that would work with CIRCULARSTRING. You would have to convert it into linestring (check ST_CurveToLine) to then be able to use ST_LineSubstring. If you want to work only with the original vertices and put then in a different order, try to convert the coordinates to an array
– Carlos MSF
Aug 3 '18 at 14:19
Thanks for pointing that out, i will and have to use the coordinates as it seems that there is no way around, i just wanted to avoid extra steps when there could be a fency postgis function for that
– blackgis
Aug 3 '18 at 15:48
Awesome input, but reverse is not my question at all. The question is how i can make a new start and endpoint from a given CIRCULARSTRING. The given CIRCULARSTRING has already a start and end point, like in my example (CIRCULARSTRING(5 2,-3 1.999999, -2 1, -4 2, 5 2)) the start and endpoint would be 5 2(first index position) and 5 2 (last index position). As it is circular i thought there is maybe an easy solution to define a new start and end point at some normalized (0-1) distance from the first index position.
– blackgis
Aug 3 '18 at 12:16
Awesome input, but reverse is not my question at all. The question is how i can make a new start and endpoint from a given CIRCULARSTRING. The given CIRCULARSTRING has already a start and end point, like in my example (CIRCULARSTRING(5 2,-3 1.999999, -2 1, -4 2, 5 2)) the start and endpoint would be 5 2(first index position) and 5 2 (last index position). As it is circular i thought there is maybe an easy solution to define a new start and end point at some normalized (0-1) distance from the first index position.
– blackgis
Aug 3 '18 at 12:16
1
1
In your question, the first line says that one of the objectives was to "change the order of the coordinates inside a circular string", which I interpreted as reversing the geometry. As for the extracting part of the geometry, as referred in previous comments, there are no native functions that would work with CIRCULARSTRING. You would have to convert it into linestring (check ST_CurveToLine) to then be able to use ST_LineSubstring. If you want to work only with the original vertices and put then in a different order, try to convert the coordinates to an array
– Carlos MSF
Aug 3 '18 at 14:19
In your question, the first line says that one of the objectives was to "change the order of the coordinates inside a circular string", which I interpreted as reversing the geometry. As for the extracting part of the geometry, as referred in previous comments, there are no native functions that would work with CIRCULARSTRING. You would have to convert it into linestring (check ST_CurveToLine) to then be able to use ST_LineSubstring. If you want to work only with the original vertices and put then in a different order, try to convert the coordinates to an array
– Carlos MSF
Aug 3 '18 at 14:19
Thanks for pointing that out, i will and have to use the coordinates as it seems that there is no way around, i just wanted to avoid extra steps when there could be a fency postgis function for that
– blackgis
Aug 3 '18 at 15:48
Thanks for pointing that out, i will and have to use the coordinates as it seems that there is no way around, i just wanted to avoid extra steps when there could be a fency postgis function for that
– blackgis
Aug 3 '18 at 15:48
add a comment |
Thanks for contributing an answer to Geographic Information Systems Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f291353%2fcircular-linestring-make-a-new-start-and-endpoint-alonge-the-line-with-normali%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
well, you could simply rebuild those cirlces. that will guarantee the start and end point will be at pi/2 rad, to then be able to rotate the circle with full control. what is that normalized distance all about?
– ThingumaBob
Aug 1 '18 at 14:41
I am trying to do that. The normailized distance is a position on the line (measured from the start point of the line) where it is described with 0 as start point and 1 as endpoint. postgis.net/docs/ST_LineSubstring.html I use this to split the line.
– blackgis
Aug 2 '18 at 8:05
ST_LineInterpolatePoint
returns a point geometry at a given fraction of linelength. do you have centroids of those circles? it might be easier to reconstruct the circle with the boundary of a buffer and rotate that.– ThingumaBob
Aug 2 '18 at 11:17
1
ST_LineInterpolationPoint, ST_LineSubstring as any other function from the Linear Referencing system of PostGIS will only work with LINESTRINGs (not CIRCULARSTRINGs)
– Carlos MSF
Aug 2 '18 at 11:57
@CarlosMSF true, I do assume that one will convert between types with
ST_LineToCurve
/ST_CurveToLine
!– ThingumaBob
Aug 2 '18 at 12:43