_______________________________________________Hi,You should create your own algorithm. For instance, in non-optimal and not well written pseudo c++:void mergeLineStrings(std::vector<line_string>& in, std::vector<line_string>& out, double threshlod) {// Process first item of "in"auto toProcess = in.front(); // This copy should be avoidedin.erase(in.begin()); // So remove it from containerfor (auto outIt=out.begin(); outIt!=out.end(); outIt++) {// see if first point of toProcess and first point of outIt are close enough to mergeif (distance(toProcess.begin(), outIt->begin()) < threshold) {// insert points from toProcess at the beginning of outIt...return;}// see if first point of toProcess and last point of outIt are close enough to merge...}// see if last point of toProcess and first point of outIt are close enough to merge...// see if last point of toProcess and last point of outIt are close enough to merge...// Found no out line_string to merge with, add toProcess in out line_stringsout.push_back(toProcess);}// Processing would bestd::vector<line_string> in = {{....}};
std::vector<line_string> out;
while (!in.empty()) {mergeLineStrings(in,out, threshold);}Hope that helps.CheersMatthieu BeghinOn Fri, Sep 20, 2019 at 8:59 AM Ahmet Temiz via Geometry <geometry@lists.boost.org> wrote:Hi,Thank you all.I need to merge lines that are in certain distances. Lines represent the roads. The result looks like some dashed lines. if they are not merged.Previously I tried geos lib's linemerger function. The result was not satisfactory.I looked at boost's append. It is for appending point to a line.What am I looking for appending a line to another line if it is in certain distance ( may be a threshold value).I am going to look at bg::distance().Do you have any other recommendations ?regardsOn Thu, Sep 19, 2019 at 7:12 PM Adam Wulkiewicz via Geometry <geometry@lists.boost.org> wrote:W dniu 19.09.2019 o 15:09, Mateusz Loskot via Geometry pisze:
> On Thu, 19 Sep 2019 at 13:01, Ahmet Temiz via Geometry
> <geometry@lists.boost.org> wrote:
>> I want to merge some partial lines (roads) to a continuous single line based on certain proximity.
>>
>> Can you guide me to use relevant function?
> Have you browsed through the API reference for potential candidates?
>
> For example, this one
> https://www.boost.org/libs/geometry/doc/html/geometry/reference/algorithms/append.html
> and this may be helpful
> https://github.com/boostorg/geometry/blob/develop/example/02_linestring_example.cpp
Well, I don't know if that's what is needed here. AFAIU there is some
reference line (linestring or segment?) and the problem is that some
other lines that are closer than some distance threshold should be
filtered out from a set of these other lines. Is that correct? If it is
then you probably only need bg::distance() or bg::comparable_distance().
But these functions will return the minimum distance between two
linestrings so if you define proximity differently then you'll need
something else.
So if the above does not apply please expand the explanation of the
problem defining what does "partial lines", "merge", "continuous single
line" and "proximity" mean exactly.
Adam
_______________________________________________
Geometry mailing list
Geometry@lists.boost.org
https://lists.boost.org/mailman/listinfo.cgi/geometry
--_______________________________________________Ahmet Temiz
Jeoloji Müh.
Afet ve Acil Durum Yönetimi Başkanlığı
Bilgi İşlem Dairesi Başkanlığı-CBS Grubu
________________________
Ahmet Temiz
Geological Eng.
Information Systems - GIS Group
Disaster and Emergency Management
of Presidency
Geometry mailing list
Geometry@lists.boost.org
https://lists.boost.org/mailman/listinfo.cgi/geometry
Geometry mailing list
Geometry@lists.boost.org
https://lists.boost.org/mailman/listinfo.cgi/geometry