<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Not ideal, a whole-of-Norway projection would have even more error minimization, but not a bad stopgap, certainly better than using UTM projections way outside their areas of validity. Check a few measurements, and do things like comparing an ST_Distance(A, B) with ST_Distance(A::geography, B::geography) to see how much deviation from truth the projection is adding.<div class=""><br class=""></div><div class="">P.<br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Jun 11, 2019, at 4:34 AM, Lars Aksel Opsahl <<a href="mailto:Lars.Opsahl@nibio.no" class="">Lars.Opsahl@nibio.no</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div id="divtagdefaultwrapper" dir="ltr" style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-size: 12pt; font-family: Calibri, Helvetica, sans-serif;" class=""><div style="margin-top: 0px; margin-bottom: 0px;" class="">Hi</div><div style="margin-top: 0px; margin-bottom: 0px;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0px;" class="">I had a discussion with Knut Bjørkelo a co worker of me today. </div><div style="margin-top: 0px; margin-bottom: 0px;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0px;" class="">He was wondering if we could use<span class="Apple-converted-space"> </span><a href="https://epsg.io/3035" class="">https://epsg.io/3035</a>, then all the area values should be correct for all valid UTM Zones in Noway.</div><div style="margin-top: 0px; margin-bottom: 0px;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0px;" class="">When we need to show a map we transform in to<span style="font-size: 12pt;" class=""> the correct to UTM zone to get a visual correct map also.</span></div><div style="margin-top: 0px; margin-bottom: 0px;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0px;" class="">If I test a single point the transformation seems be accurate up to 4. decimal using 3035 even for a extreme point.</div><div style="margin-top: 0px; margin-bottom: 0px;" class=""><br class=""></div><div style="margin: 0px; font-stretch: normal; font-size: 13px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures;" class="">select ST_AStexT(ST_Transform(ST_Transform(ST_Transform(ST_Transform(ST_setSrid(ST_MakePoint(1108142.0,7788000.0),25835),3035),25832),3035),25835));</span></div><div style="margin: 0px; font-stretch: normal; font-size: 13px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures;" class="">                st_astext                 </span></div><div style="margin: 0px; font-stretch: normal; font-size: 13px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures;" class="">------------------------------------------</span></div><div style="margin: 0px; font-stretch: normal; font-size: 13px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures;" class=""> POINT(1108142.00005503 7787999.99979103)</span></div><p style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Monaco;" class=""></p><div style="margin: 0px; font-stretch: normal; font-size: 13px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures;" class="">(1 row)</span></div><div class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0px;" class="">Lars</div><br class=""><br class=""><div style="" class=""><hr tabindex="-1" style="display: inline-block; width: 638.953125px;" class=""><div id="divRplyFwdMsg" dir="ltr" class=""><font face="Calibri, sans-serif" style="font-size: 11pt;" class=""><b class="">From:</b><span class="Apple-converted-space"> </span>postgis-users <<a href="mailto:postgis-users-bounces@lists.osgeo.org" class="">postgis-users-bounces@lists.osgeo.org</a>> on behalf of Lars Aksel Opsahl <<a href="mailto:Lars.Opsahl@nibio.no" class="">Lars.Opsahl@nibio.no</a>><br class=""><b class="">Sent:</b><span class="Apple-converted-space"> </span>Monday, June 10, 2019 10:50 PM<br class=""><b class="">To:</b><span class="Apple-converted-space"> </span>PostGIS Users Discussion<br class=""><b class="">Cc:</b><span class="Apple-converted-space"> </span>Sandro Santilli<br class=""><b class="">Subject:</b><span class="Apple-converted-space"> </span>Re: [postgis-users] Tolerance/SnapTo in Postgis Topology for meter and degrees.</font><div class=""> </div></div><div dir="ltr" class=""><div id="x_divtagdefaultwrapper" dir="ltr" class=""><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">Hi</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">You have this C-code</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">4870 _lwt_minTolerance( LWGEOM *g )</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">4871 {</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">4872 const GBOX* gbox;</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">4873 double max;</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">4874 double ret;</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">4875</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">4876 gbox = lwgeom_get_bbox(g);</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">4877 if ( ! gbox ) return 0; /* empty */</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">4878 max = FP_ABS(gbox->xmin);</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">4879 if ( max < FP_ABS(gbox->xmax) ) max = FP_ABS(gbox->xmax);</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">4880 if ( max < FP_ABS(gbox->ymin) ) max = FP_ABS(gbox->ymin);</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">4881 if ( max < FP_ABS(gbox->ymax) ) max = FP_ABS(gbox->ymax);</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">4882</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">4883 ret = 3.6 * pow(10, - ( 15 - log10(max?max:1.0) ) );</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">4884</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">4885 return ret;</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">4886 }</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">In postgis branch svn-2.5 we have this SQL code.</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">CREATE OR REPLACE FUNCTION topology._st_mintolerance(ageom Geometry)</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">RETURNS float8</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">AS $$</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">SELECT 3.6 * power(10, - ( 15 - log(coalesce(</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">nullif(</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">greatest(abs(ST_xmin($1)), abs(ST_ymin($1)),</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">abs(ST_xmax($1)), abs(ST_ymax($1))),</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">0),</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">1)) ));</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">$$ LANGUAGE 'sql' IMMUTABLE STRICT;</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">I am not that into C-code but the SQL code looks like the C-code above as you suggested in your mail.</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0in;" class=""><font size="3" class="">So I did a small test </font><a href="https://github.com/NibioOpenSource/pgtopo_update_sql/blob/develop/src/test/sql/snapto/snapto_code_example_degrees_st_min_tolerance.sql" id="LPlnk905939" class="x_OWAAutoLink" previewremoved="true" style="font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;">https://github.com/NibioOpenSource/pgtopo_update_sql/blob/develop/src/test/sql/snapto/snapto_code_example_degrees_st_min_tolerance.sql</a><font size="3" class=""> using topology._st_mintolerance and yes I was able to get snap to every second line both vertically and horizontally to work and both and north and south in Norway. I just got this to work by playing around with t</font><span style="font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">opology._st_mintolerance </span>together different factor values.</div><p style="margin: 0px; font-family: Monaco; font-size: 11px; font-stretch: normal; line-height: normal;" class=""></p><div style="font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">But I have no idea about how I can use this min tolerance code to make a generic code that behaves like 10 meter tolerance in a planar projection. </div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">And I am also little unsure about what projection that is correct to use for datasets that covers all of Norway now.</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">Before we did not really have any choice because the projection was quite bad if moved outside the bonds of the projection limits. We pretty much had to use degrees to get the a OK quality if we needed to store the data in one single dataset.</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">So whats the "correct projection" now to use for original dataset that covers all of Norway and which are updated regularly ?</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">Thanks a lot.</div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class=""><br class=""></div><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">Lars</div><p style="margin-top: 0px; margin-bottom: 0px; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class=""></p><div style="margin-top: 0px; margin-bottom: 0in; font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class=""><br class=""></div><br class=""><div style="font-family: Calibri, Helvetica, sans-serif, Helvetica, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class=""><hr tabindex="-1" style="display: inline-block; width: 638.953125px;" class=""><div id="x_divRplyFwdMsg" dir="ltr" class=""><font face="Calibri, sans-serif" style="font-size: 11pt;" class=""><b class="">From:</b><span class="Apple-converted-space"> </span><a href="mailto:strk@kbt.io" class="">strk@kbt.io</a> <<a href="mailto:strk@kbt.io" class="">strk@kbt.io</a>> on behalf of Sandro Santilli <<a href="mailto:strk@kbt.io" class="">strk@kbt.io</a>><br class=""><b class="">Sent:</b><span class="Apple-converted-space"> </span>Saturday, June 8, 2019 2:06 PM<br class=""><b class="">To:</b><span class="Apple-converted-space"> </span>PostGIS Users Discussion<br class=""><b class="">Cc:</b><span class="Apple-converted-space"> </span>Lars Aksel Opsahl<br class=""><b class="">Subject:</b><span class="Apple-converted-space"> </span>Re: [postgis-users] Tolerance/SnapTo in Postgis Topology for meter and degrees.</font><div class=""> </div></div><div class="x_BodyFragment"><font size="2" class=""><span style="font-size: 11pt;" class=""><div class="x_PlainText">On Fri, Jun 07, 2019 at 10:02:23AM +0000, Lars Aksel Opsahl wrote:<br class=""><br class="">> So the problem is how to use tolerances so we get a behavior equal to<br class="">> the test using meter.<br class="">><span class="Apple-converted-space"> </span><br class="">><span class="Apple-converted-space"> </span><br class="">> We can we define the layer in Postgis Topology with quite big value<br class="">> because this is just max value as it seems. So we can adjust the tolerance<br class="">> parameter as we add lines but the problem is that we need to adjust this<br class="">> parameter depending on where we are and what orientation the line has. For<br class="">> vertical lines we need a bigger tolerance than for horizontal lines in<br class="">> Norway. This makes it quite complicated to handle adding new lines.<br class=""><br class="">I'm not sure if it'd help but PostGIS Topology has an internal<br class="">function (not to be relied upon, but could be copied to your own<br class="">function) to determine "min tolerance" based on absolute coordinate<br class="">values. That function is meant to deal with non-uniform floating-point<br class="">resolution. What you're after is a function to deal with non-uniform<br class="">tolerances. See<br class=""><a href="https://trac.osgeo.org/postgis/browser/trunk/liblwgeom/lwgeom_topo.c?rev=14251#L4866" id="LPlnk56601" class="x_OWAAutoLink" previewremoved="true">https://trac.osgeo.org/postgis/browser/trunk/liblwgeom/lwgeom_topo.c?rev=14251#L4866</a><br class="">It used to be done in SQL with previous versions.<br class=""><br class="">Could that help ?<br class=""><br class="">--strk;<span class="Apple-converted-space"> </span></div></span></font></div></div></div></div></div></div></div></blockquote></div><br class=""></div></body></html>