diff --git a/README.md b/README.md index b52bf6e..e8817ee 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,6 @@ # Welcome to LinkingLines! - [![status](https://joss.theoj.org/papers/64eeef828a1100bfba74052d89314758/status.svg)](https://joss.theoj.org/papers/64eeef828a1100bfba74052d89314758) - -[![DOI](https://zenodo.org/badge/272334230.svg)](https://zenodo.org/badge/latestdoi/272334230) - -[![PyPI](https://img.shields.io/pypi/v/LinkingLines.svg)](https://pypi.org/project/LinkingLines/) - -[![ReadtheDocs](https://readthedocs.org/projects/linkinglines/badge/)](https://linkinglines.readthedocs.io/) - -[![License](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) + [![status](https://joss.theoj.org/papers/64eeef828a1100bfba74052d89314758/status.svg)](https://joss.theoj.org/papers/64eeef828a1100bfba74052d89314758) [![DOI](https://zenodo.org/badge/272334230.svg)](https://zenodo.org/badge/latestdoi/272334230) [![PyPI](https://img.shields.io/pypi/v/LinkingLines.svg)](https://pypi.org/project/LinkingLines/) [![ReadtheDocs](https://readthedocs.org/projects/linkinglines/badge/)](https:// inkinglines.readthedocs.io/) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) # Read the Full documentation on [ReadtheDocs!](https://linkinglines.readthedocs.io/en/latest/) @@ -53,10 +45,7 @@ import numpy as np import matplotlib.pyplot as plt import linkinglines as ll -data=pd.read_csv('path/to/data') -theta,rho,xc,yc=ll.HoughTransform(data) -data['theta']=theta -data['rho']=rho +data=ll.readFile('path/to/data') dtheta=2 #degrees drho=500 #meters @@ -73,3 +62,5 @@ You are now ready to utilize the power of Hough Line Transform, Agglomerative Cl Happy coding! + +[Contribution Guidelines](CONTRIBUTING.md) diff --git a/contributing.md b/contributing.md new file mode 100644 index 0000000..2855b0f --- /dev/null +++ b/contributing.md @@ -0,0 +1,41 @@ +Thank you for your interest in contributing to `linkinglines`. Please feel free to open up issues with bugs or requested features. Any contributions you make will benefit everybody else and are greatly appreciated. + +We recommend using a virutal environment to manage packages `virtualenv`, see [here](https://virtualenv.pypa.io/en/latest/). + +``` +# Install virtualenv if you haven't already +pip install virtualenv + +# Navigate to the project directory +cd path/to/LinkingLines + +# Create a virtual environment +virtualenv venv + +# Activate the virtual environment +# On Windows +venv\Scripts\activate +# On Unix or MacOS +source venv/bin/activate + +# Install dependencies +pip install -r requirements.txt +``` + +If you would like to contribute code please do so in a seperate branch and open up an issue describing your contribution. + +``` +git clone git@github.com:aikubo/LinkingLines.git +git checkout my-development-branch +``` + +Before submitting your pull request please verify the following: + +1. Code is documented in [NumPy Docstring Style](https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_numpy.html) +2. Code is tested and passes test + - To run the tests please go to "/tests" and run `pytest` + - Add your test code to any file with the name `test` + - More here on [pytest and testing practices](https://docs.pytest.org/en/8.0.x/) +3. Open an issue and pull request + +After your pull request the code will be reviewed by maintainers. After the sucessful merge the documentation will be regenerated. diff --git a/data/testCSV_dikemountain.csv b/data/testCSV_dikemountain.csv new file mode 100644 index 0000000..68f9fe5 --- /dev/null +++ b/data/testCSV_dikemountain.csv @@ -0,0 +1,233 @@ +WKT,WKT,fid,id,Formation +"MULTILINESTRING ((-11698939.6056063 4526535.05191324,-11697839.1346285 4528053.60575162,-11697839.1346285 4528053.60575162))","MULTILINESTRING ((-11698939.6056063 4526535.05191324,-11697839.1346285 4528053.60575162,-11697839.1346285 4528053.60575162))","1","1", +"MULTILINESTRING ((-11698410.9950929 4526751.30166871,-11697238.4408633 4527673.96729202,-11696733.8581006 4528207.3833555,-11695940.9423305 4528803.27157056,-11694725.1381498 4529586.57624035,-11694725.1381498 4529586.57624035))","MULTILINESTRING ((-11698410.9950929 4526751.30166871,-11697238.4408633 4527673.96729202,-11696733.8581006 4528207.3833555,-11695940.9423305 4528803.27157056,-11694725.1381498 4529586.57624035,-11694725.1381498 4529586.57624035))","2","2", +"MULTILINESTRING ((-11697348.9685161 4526539.85746337,-11695844.8313281 4527549.02298887))","MULTILINESTRING ((-11697348.9685161 4526539.85746337,-11695844.8313281 4527549.02298887))","3","3", +"MULTILINESTRING ((-11694785.2075263 4527944.27948635,-11694602.5966217 4528059.61268927))","MULTILINESTRING ((-11694785.2075263 4527944.27948635,-11694602.5966217 4528059.61268927))","4","4", +"MULTILINESTRING ((-11694314.2636144 4528194.16809267,-11693651.0976977 4528588.22320262))","MULTILINESTRING ((-11694314.2636144 4528194.16809267,-11693651.0976977 4528588.22320262))","5","5", +"MULTILINESTRING ((-11693497.3200938 4528660.30645444,-11693343.5424899 4528804.47295809))","MULTILINESTRING ((-11693497.3200938 4528660.30645444,-11693343.5424899 4528804.47295809))","6","6", +"MULTILINESTRING ((-11695491.6233942 4527266.69691923,-11695222.5125874 4527362.80792166,-11694886.1240789 4527646.33537882,-11694415.180167 4527877.00178465,-11694088.4027587 4527953.8905866,-11693848.1252526 4528136.50149121,-11693737.5975998 4528223.0013934,-11693492.5145437 4528319.11239582,-11693285.8758884 4528381.5845474,-11692887.0152284 4528679.52865493))","MULTILINESTRING ((-11695491.6233942 4527266.69691923,-11695222.5125874 4527362.80792166,-11694886.1240789 4527646.33537882,-11694415.180167 4527877.00178465,-11694088.4027587 4527953.8905866,-11693848.1252526 4528136.50149121,-11693737.5975998 4528223.0013934,-11693492.5145437 4528319.11239582,-11693285.8758884 4528381.5845474,-11692887.0152284 4528679.52865493))","7","7", +"MULTILINESTRING ((-11694078.7916585 4527617.5020781,-11693136.9038347 4528150.91814157))","MULTILINESTRING ((-11694078.7916585 4527617.5020781,-11693136.9038347 4528150.91814157))","8","8", +"MULTILINESTRING ((-11692939.8762797 4528251.83469412,-11692790.9042259 4528338.33459631))","MULTILINESTRING ((-11692939.8762797 4528251.83469412,-11692790.9042259 4528338.33459631))","9","9", +"MULTILINESTRING ((-11694758.7770007 4527153.76649138,-11694287.8330888 4527437.29394854))","MULTILINESTRING ((-11694758.7770007 4527153.76649138,-11694287.8330888 4527437.29394854))","10","10", +"MULTILINESTRING ((-11692550.6267199 4528729.9869312,-11692166.1827102 4529032.73658886,-11691642.3777469 4529402.7639482,-11691334.8225391 4529647.8470044))","MULTILINESTRING ((-11692550.6267199 4528729.9869312,-11692166.1827102 4529032.73658886,-11691642.3777469 4529402.7639482,-11691334.8225391 4529647.8470044))","11","11", +"MULTILINESTRING ((-11692036.4328569 4528307.09852052,-11691916.2941038 4528379.18177234))","MULTILINESTRING ((-11692036.4328569 4528307.09852052,-11691916.2941038 4528379.18177234))","12","12", +"MULTILINESTRING ((-11691805.766451 4528470.48722465,-11691676.0165978 4528585.82042756))","MULTILINESTRING ((-11691805.766451 4528470.48722465,-11691676.0165978 4528585.82042756))","13","13", +"MULTILINESTRING ((-11698177.9259121 4527410.86342287,-11698081.8149096 4527509.37720036))","MULTILINESTRING ((-11698177.9259121 4527410.86342287,-11698081.8149096 4527509.37720036))","14","13", +"MULTILINESTRING ((-11697973.6900319 4527583.86322724,-11697889.5929048 4527679.97422967))","MULTILINESTRING ((-11697973.6900319 4527583.86322724,-11697889.5929048 4527679.97422967))","15","14", +"MULTILINESTRING ((-11697827.1207532 4527785.69633234,-11697726.2042006 4527917.84896068))","MULTILINESTRING ((-11697827.1207532 4527785.69633234,-11697726.2042006 4527917.84896068))","16","15", +"MULTILINESTRING ((-11697524.3710955 4528696.34808035,-11696892.4412546 4529712.72193104))","MULTILINESTRING ((-11697524.3710955 4528696.34808035,-11696892.4412546 4529712.72193104))","17","15", +"MULTILINESTRING ((-11697329.7463156 4529131.25036634,-11696918.8717802 4530015.47158869,-11696909.26068 4530162.04086739))","MULTILINESTRING ((-11697329.7463156 4529131.25036634,-11696918.8717802 4530015.47158869,-11696909.26068 4530162.04086739))","18","16", +"MULTILINESTRING ((-11695075.9433087 4527031.22496328,-11694929.37403 4527081.68323955))","MULTILINESTRING ((-11695075.9433087 4527031.22496328,-11694929.37403 4527081.68323955))","19","17", +"MULTILINESTRING ((-11695342.6513404 4527110.51654028,-11695241.7347879 4527134.54429089))","MULTILINESTRING ((-11695342.6513404 4527110.51654028,-11695241.7347879 4527134.54429089))","20","17", +"MULTILINESTRING ((-11695047.1100079 4526841.40573348,-11694323.8747147 4527175.39146692))","MULTILINESTRING ((-11695047.1100079 4526841.40573348,-11694323.8747147 4527175.39146692))","21","18", +"MULTILINESTRING ((-11694114.8332844 4527204.22476765,-11693934.6251548 4527341.18294611))","MULTILINESTRING ((-11694114.8332844 4527204.22476765,-11693934.6251548 4527341.18294611))","22","19", +"MULTILINESTRING ((-11694556.9438955 4529858.08982221,-11693968.2640057 4530295.39488326))","MULTILINESTRING ((-11694556.9438955 4529858.08982221,-11693968.2640057 4530295.39488326))","23","20", +"MULTILINESTRING ((-11690803.8092507 4529745.15939436,-11690549.1150943 4529971.02025007))","MULTILINESTRING ((-11690803.8092507 4529745.15939436,-11690549.1150943 4529971.02025007))","24","22", +"MULTILINESTRING ((-11690265.5876371 4529966.21469994,-11689448.6441165 4530605.35286609))","MULTILINESTRING ((-11690265.5876371 4529966.21469994,-11689448.6441165 4530605.35286609))","25","23", +"MULTILINESTRING ((-11691553.4750697 4528596.63291534,-11688977.7002046 4529937.38139921,-11688598.061745 4529999.85355079))","MULTILINESTRING ((-11691553.4750697 4528596.63291534,-11688977.7002046 4529937.38139921,-11688598.061745 4529999.85355079))","26","24", +"MULTILINESTRING ((-11691678.4193728 4527597.07849008,-11691390.0863655 4527822.93934579,-11691106.5589084 4527933.46699858,-11690803.8092507 4528188.16115501,-11690270.3931872 4528486.10526254,-11689934.0046787 4528562.99406449))","MULTILINESTRING ((-11691678.4193728 4527597.07849008,-11691390.0863655 4527822.93934579,-11691106.5589084 4527933.46699858,-11690803.8092507 4528188.16115501,-11690270.3931872 4528486.10526254,-11689934.0046787 4528562.99406449))","27","25", +"MULTILINESTRING ((-11691683.2249229 4527472.13418692,-11691442.9474169 4527558.63408911))","MULTILINESTRING ((-11691683.2249229 4527472.13418692,-11691442.9474169 4527558.63408911))","28","26", +"MULTILINESTRING ((-11689780.2270749 4528769.63271971,-11689568.7828695 4528875.35482238))","MULTILINESTRING ((-11689780.2270749 4528769.63271971,-11689568.7828695 4528875.35482238))","29","27", +"MULTILINESTRING ((-11693731.5906622 4527512.98136295,-11693579.0144458 4527580.25906465))","MULTILINESTRING ((-11693731.5906622 4527512.98136295,-11693579.0144458 4527580.25906465))","30","27", +"MULTILINESTRING ((-11693482.9034434 4526700.84339243,-11693134.5010596 4526758.50999389))","MULTILINESTRING ((-11693482.9034434 4526700.84339243,-11693134.5010596 4526758.50999389))","31","28", +"MULTILINESTRING ((-11693007.1539814 4526693.63506725,-11692653.9460475 4526842.60712101))","MULTILINESTRING ((-11693007.1539814 4526693.63506725,-11692653.9460475 4526842.60712101))","32","29", +"MULTILINESTRING ((-11692550.6267198 4526948.32922368,-11692399.251891 4526948.32922368))","MULTILINESTRING ((-11692550.6267198 4526948.32922368,-11692399.251891 4526948.32922368))","33","30", +"MULTILINESTRING ((-11693461.2784679 4526561.48243891,-11694386.3468662 4526294.77440717))","MULTILINESTRING ((-11693461.2784679 4526561.48243891,-11694386.3468662 4526294.77440717))","34","31", +"MULTILINESTRING ((-11693982.680656 4526169.83010402,-11694126.8471597 4525857.46934612))","MULTILINESTRING ((-11693982.680656 4526169.83010402,-11694126.8471597 4525857.46934612))","35","32", +"MULTILINESTRING ((-11692340.383902 4527051.04785753,-11692175.7938104 4527179.59632328))","MULTILINESTRING ((-11692340.383902 4527051.04785753,-11692175.7938104 4527179.59632328))","36","36", +"MULTILINESTRING ((-11694675.881261 4525775.17430029,-11694286.6317012 4525808.81315114))","MULTILINESTRING ((-11694675.881261 4525775.17430029,-11694286.6317012 4525808.81315114))","37","36", +"MULTILINESTRING ((-11694930.5754175 4525813.61870126,-11695290.9916766 4525703.09104847))","MULTILINESTRING ((-11694930.5754175 4525813.61870126,-11695290.9916766 4525703.09104847))","38","37", +"MULTILINESTRING ((-11694930.5754175 4526105.55587114,-11694729.9436999 4526175.2363479))","MULTILINESTRING ((-11694930.5754175 4526105.55587114,-11694729.9436999 4526175.2363479))","39","38", +"MULTILINESTRING ((-11695745.1161631 4525705.49382353,-11695495.2275568 4525828.03535162))","MULTILINESTRING ((-11695745.1161631 4525705.49382353,-11695495.2275568 4525828.03535162))","40","39", +"MULTILINESTRING ((-11695862.852141 4526181.24328555,-11695307.811102 4526375.86806547))","MULTILINESTRING ((-11695862.852141 4526181.24328555,-11695307.811102 4526375.86806547))","41","40", +"MULTILINESTRING ((-11693546.5769825 4525772.77152523,-11693962.257068 4525518.07736879))","MULTILINESTRING ((-11693546.5769825 4525772.77152523,-11693962.257068 4525518.07736879))","42","41", +"MULTILINESTRING ((-11694188.1179237 4525465.21631746,-11694558.1452831 4525357.09143973))","MULTILINESTRING ((-11694188.1179237 4525465.21631746,-11694558.1452831 4525357.09143973))","43","42", +"MULTILINESTRING ((-11694207.3401242 4525590.16062062,-11693911.7987917 4525626.20224652))","MULTILINESTRING ((-11694207.3401242 4525590.16062062,-11693911.7987917 4525626.20224652))","44","43", +"MULTILINESTRING ((-11696255.7058635 4526081.52812053,-11696532.0249954 4525951.77826726))","MULTILINESTRING ((-11696255.7058635 4526081.52812053,-11696532.0249954 4525951.77826726))","45","45", +"MULTILINESTRING ((-11696419.0945676 4525747.5423871,-11695525.262245 4526110.36142126))","MULTILINESTRING ((-11696419.0945676 4525747.5423871,-11695525.262245 4526110.36142126))","46","46", +"MULTILINESTRING ((-11696308.5669148 4526720.66628668,-11696063.4838586 4526917.69384166,-11695712.6786997 4526975.36044312))","MULTILINESTRING ((-11696308.5669148 4526720.66628668,-11696063.4838586 4526917.69384166,-11695712.6786997 4526975.36044312))","47","47", +"MULTILINESTRING ((-11695803.9841521 4526730.27738693,-11696068.2894087 4526682.22188571))","MULTILINESTRING ((-11695803.9841521 4526730.27738693,-11696068.2894087 4526682.22188571))","48","48", +"MULTILINESTRING ((-11695200.8876118 4529849.07941573,-11695373.8874162 4529632.82966027))","MULTILINESTRING ((-11695200.8876118 4529849.07941573,-11695373.8874162 4529632.82966027))","49","49", +"MULTILINESTRING ((-11699256.7719143 4529868.3016162,-11699141.4387114 4527619.30415938))","MULTILINESTRING ((-11699256.7719143 4529868.3016162,-11699141.4387114 4527619.30415938))","50","50", +"MULTILINESTRING ((-11698929.9945061 4527936.47046739,-11699151.0498116 4527532.80425719,-11699179.8831124 4527042.6381448))","MULTILINESTRING ((-11698929.9945061 4527936.47046739,-11699151.0498116 4527532.80425719,-11699179.8831124 4527042.6381448))","51","51", +"MULTILINESTRING ((-11698821.8696283 4527597.67918383,-11698881.9390048 4527285.31842593))","MULTILINESTRING ((-11698821.8696283 4527597.67918383,-11698881.9390048 4527285.31842593))","52","53", +"MULTILINESTRING ((-11699576.3409974 4527417.47105427,-11699338.4662664 4526708.65241136))","MULTILINESTRING ((-11699576.3409974 4527417.47105427,-11699338.4662664 4526708.65241136))","53","54", +"MULTILINESTRING ((-11700119.3681611 4527559.23478285,-11699797.396303 4527054.65202011))","MULTILINESTRING ((-11700119.3681611 4527559.23478285,-11699797.396303 4527054.65202011))","54","55", +"MULTILINESTRING ((-11699499.4521954 4526682.22188569,-11699364.896792 4526292.97232586,-11699355.2856918 4525711.50076117))","MULTILINESTRING ((-11699499.4521954 4526682.22188569,-11699364.896792 4526292.97232586,-11699355.2856918 4525711.50076117))","55","56", +"MULTILINESTRING ((-11699792.5907528 4526129.58362173,-11699533.0910463 4526259.33347501))","MULTILINESTRING ((-11699792.5907528 4526129.58362173,-11699533.0910463 4526259.33347501))","56","57", +"MULTILINESTRING ((-11699907.9239558 4526687.02743582,-11699826.2296037 4526365.05557768))","MULTILINESTRING ((-11699907.9239558 4526687.02743582,-11699826.2296037 4526365.05557768))","57","59", +"MULTILINESTRING ((-11700412.5067185 4528705.35848681,-11700162.6181122 4527749.05401265))","MULTILINESTRING ((-11700412.5067185 4528705.35848681,-11700162.6181122 4527749.05401265))","58","59", +"MULTILINESTRING ((-11699807.0074032 4527369.41555306,-11699686.8686502 4528258.44232552,-11699547.5076967 4528594.83083402))","MULTILINESTRING ((-11699807.0074032 4527369.41555306,-11699686.8686502 4528258.44232552,-11699547.5076967 4528594.83083402))","59","60", +"MULTILINESTRING ((-11699975.2016575 4529637.63521037,-11700205.8680633 4528839.91389021))","MULTILINESTRING ((-11699975.2016575 4529637.63521037,-11700205.8680633 4528839.91389021))","60","61", +"MULTILINESTRING ((-11700921.8950314 4531627.13296064,-11700138.5903616 4529988.44036923))","MULTILINESTRING ((-11700921.8950314 4531627.13296064,-11700138.5903616 4529988.44036923))","61","62", +"MULTILINESTRING ((-11701085.2837355 4531963.52146914,-11700993.9782832 4531790.52166477))","MULTILINESTRING ((-11701085.2837355 4531963.52146914,-11700993.9782832 4531790.52166477))","62","63", +"MULTILINESTRING ((-11700859.4228798 4530593.93968453,-11700566.2843224 4530017.27366996))","MULTILINESTRING ((-11700859.4228798 4530593.93968453,-11700566.2843224 4530017.27366996))","63","64", +"MULTILINESTRING ((-11699403.341193 4530468.99538138,-11699398.5356429 4529877.91271644))","MULTILINESTRING ((-11699403.341193 4530468.99538138,-11699398.5356429 4529877.91271644))","64","65", +"MULTILINESTRING ((-11700551.867672 4529632.82966025,-11700354.8401171 4529301.24670187))","MULTILINESTRING ((-11700551.867672 4529632.82966025,-11700354.8401171 4529301.24670187))","65","66", +"MULTILINESTRING ((-11699840.6462541 4529599.1908094,-11699739.7297015 4529325.27445247))","MULTILINESTRING ((-11699840.6462541 4529599.1908094,-11699739.7297015 4529325.27445247))","66","67", +"MULTILINESTRING ((-11701719.6163515 4529012.91369458,-11700955.5338822 4527585.66530852))","MULTILINESTRING ((-11701719.6163515 4529012.91369458,-11700955.5338822 4527585.66530852))","67","68", +"MULTILINESTRING ((-11701142.950337 4528633.27523499,-11701008.3949336 4528364.16442819))","MULTILINESTRING ((-11701142.950337 4528633.27523499,-11701008.3949336 4528364.16442819))","68","69", +"MULTILINESTRING ((-11701080.4781854 4528897.58049167,-11701027.6171341 4528710.16403693))","MULTILINESTRING ((-11701080.4781854 4528897.58049167,-11701027.6171341 4528710.16403693))","69","70", +"MULTILINESTRING ((-11700338.0206916 4527244.4712499,-11700128.9792614 4526614.94418399))","MULTILINESTRING ((-11700338.0206916 4527244.4712499,-11700128.9792614 4526614.94418399))","70","71", +"MULTILINESTRING ((-11700299.5762907 4527674.56798576,-11700289.9651904 4527511.17928163))","MULTILINESTRING ((-11700299.5762907 4527674.56798576,-11700289.9651904 4527511.17928163))","71","72", +"MULTILINESTRING ((-11701438.4916694 4527556.83200779,-11701272.7001903 4527398.24885378))","MULTILINESTRING ((-11701438.4916694 4527556.83200779,-11701272.7001903 4527398.24885378))","72","73", +"MULTILINESTRING ((-11700869.0339801 4527722.62348698,-11700784.9368529 4527451.10990512))","MULTILINESTRING ((-11700869.0339801 4527722.62348698,-11700784.9368529 4527451.10990512))","73","74", +"MULTILINESTRING ((-11701150.1586622 4527674.56798576,-11700869.0339801 4527415.06827921,-11700609.5342735 4526912.88829152,-11700210.6736134 4526338.62505201,-11700150.6042369 4526249.72237476))","MULTILINESTRING ((-11701150.1586622 4527674.56798576,-11700869.0339801 4527415.06827921,-11700609.5342735 4526912.88829152,-11700210.6736134 4526338.62505201,-11700150.6042369 4526249.72237476))","74","75", +"MULTILINESTRING ((-11701616.2970239 4527448.70713005,-11700744.0896769 4526559.68035759))","MULTILINESTRING ((-11701616.2970239 4527448.70713005,-11700744.0896769 4526559.68035759))","75","77", +"MULTILINESTRING ((-11701320.7556915 4526747.09681232,-11700789.7424031 4526216.08352391))","MULTILINESTRING ((-11701320.7556915 4526747.09681232,-11700789.7424031 4526216.08352391))","76","78", +"MULTILINESTRING ((-11700852.2145546 4526557.27758253,-11700381.2706427 4526093.54199581))","MULTILINESTRING ((-11700852.2145546 4526557.27758253,-11700381.2706427 4526093.54199581))","77","79", +"MULTILINESTRING ((-11701111.7142612 4526660.59691014,-11700902.6728309 4526451.55547986))","MULTILINESTRING ((-11701111.7142612 4526660.59691014,-11700902.6728309 4526451.55547986))","78","80", +"MULTILINESTRING ((-11702077.6298356 4527708.20683661,-11701957.4910826 4527604.887509))","MULTILINESTRING ((-11702077.6298356 4527708.20683661,-11701957.4910826 4527604.887509))","79","81", +"MULTILINESTRING ((-11702156.9214126 4527580.85975839,-11702043.9909847 4527491.95708115))","MULTILINESTRING ((-11702156.9214126 4527580.85975839,-11702043.9909847 4527491.95708115))","80","82", +"MULTILINESTRING ((-11701217.4363638 4526946.52714236,-11701034.8254592 4526735.08293702))","MULTILINESTRING ((-11701217.4363638 4526946.52714236,-11701034.8254592 4526735.08293702))","81","80", +"MULTILINESTRING ((-11701904.6300312 4527662.55411046,-11701424.0750191 4527109.91584649))","MULTILINESTRING ((-11701904.6300312 4527662.55411046,-11701424.0750191 4527109.91584649))","82","81", +"MULTILINESTRING ((-11701875.7967305 4527532.80425718,-11701770.0746278 4527393.44330366))","MULTILINESTRING ((-11701875.7967305 4527532.80425718,-11701770.0746278 4527393.44330366))","83","82", +"MULTILINESTRING ((-11702341.9350923 4527893.22051628,-11702192.9630385 4527811.52616422))","MULTILINESTRING ((-11702341.9350923 4527893.22051628,-11702192.9630385 4527811.52616422))","84","84", +"MULTILINESTRING ((-11699367.2995671 4529676.07961134,-11699593.1604228 4528546.7753328))","MULTILINESTRING ((-11699367.2995671 4529676.07961134,-11699593.1604228 4528546.7753328))","85","87", +"MULTILINESTRING ((-11699343.2718165 4529358.91330332,-11699458.6050194 4529128.24689749))","MULTILINESTRING ((-11699343.2718165 4529358.91330332,-11699458.6050194 4529128.24689749))","86","88", +"MULTILINESTRING ((-11702207.3796889 4526528.4442818,-11701380.825068 4526139.19472197))","MULTILINESTRING ((-11702207.3796889 4526528.4442818,-11701380.825068 4526139.19472197))","87","89", +"MULTILINESTRING ((-11702630.2680995 4526638.97193459,-11702361.1572927 4526514.02763144))","MULTILINESTRING ((-11702630.2680995 4526638.97193459,-11702361.1572927 4526514.02763144))","88","90", +"MULTILINESTRING ((-11703288.6284662 4526864.8327903,-11702803.2679039 4526643.77748472))","MULTILINESTRING ((-11703288.6284662 4526864.8327903,-11702803.2679039 4526643.77748472))","89","91", +"MULTILINESTRING ((-11703509.6837718 4527148.36024747,-11703735.5446275 4527138.74914722))","MULTILINESTRING ((-11703509.6837718 4527148.36024747,-11703735.5446275 4527138.74914722))","90","92", +"MULTILINESTRING ((-11702207.3796889 4526768.72178787,-11702072.8242855 4526696.63853605))","MULTILINESTRING ((-11702207.3796889 4526768.72178787,-11702072.8242855 4526696.63853605))","91","93", +"MULTILINESTRING ((-11704148.8219379 4527342.98502739,-11703627.4197497 4527049.84646998))","MULTILINESTRING ((-11704148.8219379 4527342.98502739,-11703627.4197497 4527049.84646998))","92","94", +"MULTILINESTRING ((-11703959.0027081 4526848.01336488,-11704244.9329404 4526636.56915953))","MULTILINESTRING ((-11703959.0027081 4526848.01336488,-11704244.9329404 4526636.56915953))","93","95", +"MULTILINESTRING ((-11700399.2914557 4526124.7780716,-11700428.1247564 4525898.91721589))","MULTILINESTRING ((-11700399.2914557 4526124.7780716,-11700428.1247564 4525898.91721589))","94","96", +"MULTILINESTRING ((-11701072.0684727 4525966.19491759,-11701245.068277 4525956.58381735))","MULTILINESTRING ((-11701072.0684727 4525966.19491759,-11701245.068277 4525956.58381735))","95","97", +"MULTILINESTRING ((-11701360.40148 4526008.24348115,-11701532.1998968 4526007.04209362))","MULTILINESTRING ((-11701360.40148 4526008.24348115,-11701532.1998968 4526007.04209362))","96","98", +"MULTILINESTRING ((-11701659.546975 4526065.91008261,-11701846.9634298 4526109.1600337))","MULTILINESTRING ((-11701659.546975 4526065.91008261,-11701846.9634298 4526109.1600337))","97","99", +"MULTILINESTRING ((-11702013.9562965 4526189.65299824,-11701828.9426168 4526187.25022318))","MULTILINESTRING ((-11702013.9562965 4526189.65299824,-11701828.9426168 4526187.25022318))","98","100", +"MULTILINESTRING ((-11701730.4288393 4526219.68768649,-11701849.3662048 4526218.48629897))","MULTILINESTRING ((-11701730.4288393 4526219.68768649,-11701849.3662048 4526218.48629897))","99","101", +"MULTILINESTRING ((-11702387.5878184 4526374.66667791,-11702165.3311253 4526195.65993589))","MULTILINESTRING ((-11702387.5878184 4526374.66667791,-11702165.3311253 4526195.65993589))","100","102", +"MULTILINESTRING ((-11702685.5319259 4526099.54893346,-11702480.0946582 4525955.38242982))","MULTILINESTRING ((-11702685.5319259 4526099.54893346,-11702480.0946582 4525955.38242982))","101","103", +"MULTILINESTRING ((-11702584.6153734 4525993.82683079,-11702393.5947561 4525883.299178))","MULTILINESTRING ((-11702584.6153734 4525993.82683079,-11702393.5947561 4525883.299178))","102","104", +"MULTILINESTRING ((-11702532.9557096 4525715.10492375,-11702254.2338025 4525639.41750934))","MULTILINESTRING ((-11702532.9557096 4525715.10492375,-11702254.2338025 4525639.41750934))","103","105", +"MULTILINESTRING ((-11702225.4005018 4525482.03574286,-11702080.0326106 4525365.50115241))","MULTILINESTRING ((-11702225.4005018 4525482.03574286,-11702080.0326106 4525365.50115241))","104","106", +"MULTILINESTRING ((-11701564.6373601 4525621.39669638,-11701897.421706 4525620.19530885))","MULTILINESTRING ((-11701564.6373601 4525621.39669638,-11701897.421706 4525620.19530885))","105","107", +"MULTILINESTRING ((-11701551.4220973 4525396.13653444,-11701690.7830508 4525381.71988407))","MULTILINESTRING ((-11701551.4220973 4525396.13653444,-11701690.7830508 4525381.71988407))","106","108", +"MULTILINESTRING ((-11701601.8803736 4525334.86577039,-11701418.0680814 4525330.06022027))","MULTILINESTRING ((-11701601.8803736 4525334.86577039,-11701418.0680814 4525330.06022027))","107","109", +"MULTILINESTRING ((-11700966.0460231 4524666.29360975,-11701350.4900328 4524445.23830416))","MULTILINESTRING ((-11700966.0460231 4524666.29360975,-11701350.4900328 4524445.23830416))","108","110", +"MULTILINESTRING ((-11701235.1568299 4525055.54316958,-11701763.7673433 4524805.65456327))","MULTILINESTRING ((-11701235.1568299 4525055.54316958,-11701763.7673433 4524805.65456327))","109","112", +"MULTILINESTRING ((-11701499.4620866 4524406.79390319,-11702268.350106 4523974.29439226,-11702345.238908 4523849.3500891,-11702816.1828199 4523637.90588376))","MULTILINESTRING ((-11701499.4620866 4524406.79390319,-11702268.350106 4523974.29439226,-11702345.238908 4523849.3500891,-11702816.1828199 4523637.90588376))","110","113", +"MULTILINESTRING ((-11700581.6020134 4524522.1271061,-11700653.6852652 4524387.5717027))","MULTILINESTRING ((-11700581.6020134 4524522.1271061,-11700653.6852652 4524387.5717027))","111","114", +"MULTILINESTRING ((-11700881.948896 4524216.97467339,-11701095.7958764 4524101.64147048))","MULTILINESTRING ((-11700881.948896 4524216.97467339,-11701095.7958764 4524101.64147048))","112","105", +"MULTILINESTRING ((-11700793.0462188 4524173.7247223,-11701117.420852 4524007.93324311))","MULTILINESTRING ((-11700793.0462188 4524173.7247223,-11701117.420852 4524007.93324311))","113","106", +"MULTILINESTRING ((-11700360.5467078 4523839.73898886,-11700752.1990427 4523515.36435566))","MULTILINESTRING ((-11700360.5467078 4523839.73898886,-11700752.1990427 4523515.36435566))","114","116", +"MULTILINESTRING ((-11700129.880302 4523880.58616489,-11700185.1441284 4523368.79507696))","MULTILINESTRING ((-11700129.880302 4523880.58616489,-11700185.1441284 4523368.79507696))","115","117", +"MULTILINESTRING ((-11699407.2457025 4524090.82898271,-11698647.9687833 4522625.13619567))","MULTILINESTRING ((-11699407.2457025 4524090.82898271,-11698647.9687833 4522625.13619567))","116",, +"MULTILINESTRING ((-11698758.4964361 4522774.10824943,-11697999.2195169 4521611.16512005))","MULTILINESTRING ((-11698758.4964361 4522774.10824943,-11697999.2195169 4521611.16512005))","117",, +"MULTILINESTRING ((-11699561.0233064 4523422.85751583,-11699416.8568027 4522687.60834725,-11699363.9957514 4522000.41467988))","MULTILINESTRING ((-11699561.0233064 4523422.85751583,-11699416.8568027 4522687.60834725,-11699363.9957514 4522000.41467988))","118",, +"MULTILINESTRING ((-11699416.8568027 4523461.3019168,-11699171.7737465 4522783.71934968))","MULTILINESTRING ((-11699416.8568027 4523461.3019168,-11699171.7737465 4522783.71934968))","119",, +"MULTILINESTRING ((-11699878.1896144 4524081.21788246,-11699657.1343088 4523567.02401947))","MULTILINESTRING ((-11699878.1896144 4524081.21788246,-11699657.1343088 4523567.02401947))","120",, +"MULTILINESTRING ((-11699782.078612 4522860.60815162,-11699767.6619616 4522495.38634239))","MULTILINESTRING ((-11699782.078612 4522860.60815162,-11699767.6619616 4522495.38634239))","121",, +"MULTILINESTRING ((-11700344.3279762 4523427.66306595,-11700800.8552377 4522649.16394628))","MULTILINESTRING ((-11700344.3279762 4523427.66306595,-11700800.8552377 4522649.16394628))","122",, +"MULTILINESTRING ((-11700969.049492 4523283.49656231,-11700930.605091 4523345.96871388,-11701190.1047975 4523062.44125672))","MULTILINESTRING ((-11700969.049492 4523283.49656231,-11700930.605091 4523345.96871388,-11701190.1047975 4523062.44125672))","123",, +"MULTILINESTRING ((-11702996.9916432 4523764.05157445,-11702799.9640882 4523528.5796185))","MULTILINESTRING ((-11702996.9916432 4523764.05157445,-11702799.9640882 4523528.5796185))","124",, +"MULTILINESTRING ((-11703823.5462641 4523072.05235696,-11703179.6025478 4523494.94076765))","MULTILINESTRING ((-11703823.5462641 4523072.05235696,-11703179.6025478 4523494.94076765))","125",, +"MULTILINESTRING ((-11701041.1327438 4521976.38692928,-11701132.4381961 4521774.55382418,-11701363.1046019 4521572.72071907))","MULTILINESTRING ((-11701041.1327438 4521976.38692928,-11701132.4381961 4521774.55382418,-11701363.1046019 4521572.72071907))","126",, +"MULTILINESTRING ((-11700810.4663379 4522452.1363913,-11700858.5218392 4522259.91438644,-11700945.0217413 4522053.27573122))","MULTILINESTRING ((-11700810.4663379 4522452.1363913,-11700858.5218392 4522259.91438644,-11700945.0217413 4522053.27573122))","127",, +"MULTILINESTRING ((-11700401.9945776 4522298.35878741,-11700647.0776338 4521644.8039709))","MULTILINESTRING ((-11700401.9945776 4522298.35878741,-11700647.0776338 4521644.8039709))","128",, +"MULTILINESTRING ((-11700844.1051888 4521418.94311519,-11700594.2165825 4521116.19345754))","MULTILINESTRING ((-11700844.1051888 4521418.94311519,-11700594.2165825 4521116.19345754))","129",, +"MULTILINESTRING ((-11700757.6052866 4521471.80416653,-11700844.1051888 4521145.02675827))","MULTILINESTRING ((-11700757.6052866 4521471.80416653,-11700844.1051888 4521145.02675827))","130",, +"MULTILINESTRING ((-11699993.5228173 4521856.24817624,-11699993.5228173 4521572.72071907))","MULTILINESTRING ((-11699993.5228173 4521856.24817624,-11699993.5228173 4521572.72071907))","131",, +"MULTILINESTRING ((-11699974.3006168 4521169.05450888,-11699969.4950667 4521409.33201495))","MULTILINESTRING ((-11699974.3006168 4521169.05450888,-11699969.4950667 4521409.33201495))","132",, +"MULTILINESTRING ((-11699315.9402502 4521683.24837187,-11699277.4958492 4521193.08225948))","MULTILINESTRING ((-11699315.9402502 4521683.24837187,-11699277.4958492 4521193.08225948))","133",, +"MULTILINESTRING ((-11699527.3844555 4521769.74827406,-11699541.8011059 4521399.72091471))","MULTILINESTRING ((-11699527.3844555 4521769.74827406,-11699541.8011059 4521399.72091471))","134",, +"MULTILINESTRING ((-11699258.2736487 4520724.54112264,-11699258.2736487 4520546.73576815))","MULTILINESTRING ((-11699258.2736487 4520724.54112264,-11699258.2736487 4520546.73576815))","135",, +"MULTILINESTRING ((-11699324.3499629 4520701.71475957,-11699327.9541255 4520501.083042))","MULTILINESTRING ((-11699324.3499629 4520701.71475957,-11699327.9541255 4520501.083042))","136",, +"MULTILINESTRING ((-11701337.8754638 4524954.62661704,-11701458.0142168 4524851.30728943))","MULTILINESTRING ((-11701337.8754638 4524954.62661704,-11701458.0142168 4524851.30728943))","137",, +"MULTILINESTRING ((-11701347.486564 4524846.50173931,-11701510.8752682 4524812.86288846))","MULTILINESTRING ((-11701347.486564 4524846.50173931,-11701510.8752682 4524812.86288846))","138",, +"MULTILINESTRING ((-11701767.9721996 4525012.29321849,-11702003.4441556 4524988.26546789))","MULTILINESTRING ((-11701767.9721996 4525012.29321849,-11702003.4441556 4524988.26546789))","139",, +"MULTILINESTRING ((-11701945.7775541 4525050.73761947,-11702061.1107571 4525031.51541898))","MULTILINESTRING ((-11701945.7775541 4525050.73761947,-11702061.1107571 4525031.51541898))","140",, +"MULTILINESTRING ((-11702229.3050113 4525062.75149477,-11701928.9581287 4525098.79312068))","MULTILINESTRING ((-11702229.3050113 4525062.75149477,-11701928.9581287 4525098.79312068))","141",, +"MULTILINESTRING ((-11701806.4166006 4525106.00144586,-11701883.3054026 4525057.94594465))","MULTILINESTRING ((-11701806.4166006 4525106.00144586,-11701883.3054026 4525057.94594465))","142",, +"MULTILINESTRING ((-11702330.2215639 4525238.1540742,-11702037.0830065 4525161.26527226))","MULTILINESTRING ((-11702330.2215639 4525238.1540742,-11702037.0830065 4525161.26527226))","143",, +"MULTILINESTRING ((-11702027.4719062 4525271.79292505,-11702762.7210748 4525202.11244829))","MULTILINESTRING ((-11702027.4719062 4525271.79292505,-11702762.7210748 4525202.11244829))","144",, +"MULTILINESTRING ((-11702683.4294978 4524997.87656813,-11702471.9852924 4524834.487864))","MULTILINESTRING ((-11702683.4294978 4524997.87656813,-11702471.9852924 4524834.487864))","145",, +"MULTILINESTRING ((-11702289.3743878 4524675.90470999,-11702565.6935198 4524668.69638481))","MULTILINESTRING ((-11702289.3743878 4524675.90470999,-11702565.6935198 4524668.69638481))","146",, +"MULTILINESTRING ((-11702378.2770651 4524625.44643372,-11702471.9852924 4524512.51600587))","MULTILINESTRING ((-11702378.2770651 4524625.44643372,-11702471.9852924 4524512.51600587))","147",, +"MULTILINESTRING ((-11702366.2631898 4524243.40519906,-11702135.5967839 4524406.79390319))","MULTILINESTRING ((-11702366.2631898 4524243.40519906,-11702135.5967839 4524406.79390319))","148",, +"MULTILINESTRING ((-11702001.0413805 4524337.11342643,-11702118.7773585 4524257.82184943))","MULTILINESTRING ((-11702001.0413805 4524337.11342643,-11702118.7773585 4524257.82184943))","149",, +"MULTILINESTRING ((-11702159.6245345 4524558.16873202,-11702272.5549624 4524474.07160489))","MULTILINESTRING ((-11702159.6245345 4524558.16873202,-11702272.5549624 4524474.07160489))","150",, +"MULTILINESTRING ((-11702145.2078842 4524450.04385429,-11702255.735537 4524377.96060247))","MULTILINESTRING ((-11702145.2078842 4524450.04385429,-11702255.735537 4524377.96060247))","151",, +"MULTILINESTRING ((-11703542.421582 4525168.47359744,-11703064.2693449 4525285.00818789))","MULTILINESTRING ((-11703542.421582 4525168.47359744,-11703064.2693449 4525285.00818789))","152",, +"MULTILINESTRING ((-11703505.1785686 4525168.47359744,-11703292.5329757 4525139.64029671,-11703156.7761848 4525097.59173315))","MULTILINESTRING ((-11703505.1785686 4525168.47359744,-11703292.5329757 4525139.64029671,-11703156.7761848 4525097.59173315))","153",, +"MULTILINESTRING ((-11703566.4493326 4525614.18837121,-11703317.7621138 4525516.87598125))","MULTILINESTRING ((-11703566.4493326 4525614.18837121,-11703317.7621138 4525516.87598125))","154",, +"MULTILINESTRING ((-11703352.6023522 4525389.52890303,-11703107.519296 4525382.32057785))","MULTILINESTRING ((-11703352.6023522 4525389.52890303,-11703107.519296 4525382.32057785))","155",, +"MULTILINESTRING ((-11703168.7900601 4525739.13267437,-11703053.4568571 4525656.23693477))","MULTILINESTRING ((-11703168.7900601 4525739.13267437,-11703053.4568571 4525656.23693477))","156",, +"MULTILINESTRING ((-11702972.9638926 4526200.46548602,-11702810.776576 4526166.82663517))","MULTILINESTRING ((-11702972.9638926 4526200.46548602,-11702810.776576 4526166.82663517))","157",, +"MULTILINESTRING ((-11703006.6027435 4526045.48649461,-11702833.6029391 4526166.82663517))","MULTILINESTRING ((-11703006.6027435 4526045.48649461,-11702833.6029391 4526166.82663517))","158",, +"MULTILINESTRING ((-11702085.1385077 4522822.16375065,-11701739.1388989 4522536.23351843))","MULTILINESTRING ((-11702085.1385077 4522822.16375065,-11701739.1388989 4522536.23351843))","159",, +"MULTILINESTRING ((-11703798.317126 4523021.5940807,-11704250.0388374 4522819.76097559))","MULTILINESTRING ((-11703798.317126 4523021.5940807,-11704250.0388374 4522819.76097559))","160",, +"MULTILINESTRING ((-11704778.6493507 4523598.26009527,-11704509.5385439 4523756.84324927,-11704350.9553899 4523728.00994855))","MULTILINESTRING ((-11704778.6493507 4523598.26009527,-11704509.5385439 4523756.84324927,-11704350.9553899 4523728.00994855))","161",, +"MULTILINESTRING ((-11702678.6239477 4522550.65016879,-11702813.1793511 4522800.53877511,-11703043.8457569 4523184.98278482,-11703015.0124562 4523295.51043762,-11702765.1238499 4523444.48249138,-11702659.4017472 4523430.06584102,-11702419.1242411 4523506.95464296,-11702150.0134343 4523564.62124442,-11702001.0413806 4523482.92689235,-11701626.2084711 4523482.92689235,-11701520.4863684 4523367.59368944,-11701467.6253171 4523324.34373834,-11701390.7365151 4523314.7326381,-11701309.0421631 4523285.89933737,-11701280.2088623 4523045.6218313,-11701241.7644614 4522834.17762596,-11701054.3480066 4522656.37227147,-11700842.9038013 4522617.92787049,-11700751.598349 4522488.17801721))","MULTILINESTRING ((-11702678.6239477 4522550.65016879,-11702813.1793511 4522800.53877511,-11703043.8457569 4523184.98278482,-11703015.0124562 4523295.51043762,-11702765.1238499 4523444.48249138,-11702659.4017472 4523430.06584102,-11702419.1242411 4523506.95464296,-11702150.0134343 4523564.62124442,-11702001.0413806 4523482.92689235,-11701626.2084711 4523482.92689235,-11701520.4863684 4523367.59368944,-11701467.6253171 4523324.34373834,-11701390.7365151 4523314.7326381,-11701309.0421631 4523285.89933737,-11701280.2088623 4523045.6218313,-11701241.7644614 4522834.17762596,-11701054.3480066 4522656.37227147,-11700842.9038013 4522617.92787049,-11700751.598349 4522488.17801721))","162",, +"MULTILINESTRING ((-11701001.4869553 4522766.89992426,-11700799.6538502 4522680.40002207,-11700713.153948 4522742.87217365))","MULTILINESTRING ((-11701001.4869553 4522766.89992426,-11700799.6538502 4522680.40002207,-11700713.153948 4522742.87217365))","163",, +"MULTILINESTRING ((-11698983.1559043 4522620.33064556,-11698858.2116011 4522207.05333511))","MULTILINESTRING ((-11698983.1559043 4522620.33064556,-11698858.2116011 4522207.05333511))","164",, +"MULTILINESTRING ((-11698944.7115033 4522178.22003439,-11698901.4615522 4521966.77582904))","MULTILINESTRING ((-11698944.7115033 4522178.22003439,-11698901.4615522 4521966.77582904))","165",, +"MULTILINESTRING ((-11698790.9338994 4521971.58137916,-11698243.1011856 4520630.83289528))","MULTILINESTRING ((-11698790.9338994 4521971.58137916,-11698243.1011856 4520630.83289528))","166",, +"MULTILINESTRING ((-11698541.0452931 4521707.27612248,-11698483.3786917 4520899.94370208))","MULTILINESTRING ((-11698541.0452931 4521707.27612248,-11698483.3786917 4520899.94370208))","167",, +"MULTILINESTRING ((-11697892.2960267 4521563.10961884,-11697776.9628238 4521452.58196605))","MULTILINESTRING ((-11697892.2960267 4521563.10961884,-11697776.9628238 4521452.58196605))","168",, +"MULTILINESTRING ((-11698228.6845352 4522500.19189252,-11698219.073435 4522327.19208815))","MULTILINESTRING ((-11698228.6845352 4522500.19189252,-11698219.073435 4522327.19208815))","169",, +"MULTILINESTRING ((-11697546.296418 4522082.10903196,-11697157.0468582 4521447.77641593,-11696950.4082029 4520909.55480232))","MULTILINESTRING ((-11697546.296418 4522082.10903196,-11697157.0468582 4521447.77641593,-11696950.4082029 4520909.55480232))","170",, +"MULTILINESTRING ((-11696407.3810392 4520726.94389771,-11696253.6034353 4520505.88859212))","MULTILINESTRING ((-11696407.3810392 4520726.94389771,-11696253.6034353 4520505.88859212))","171",, +"MULTILINESTRING ((-11697161.8524083 4522341.60873851,-11696743.7695477 4522043.66463098))","MULTILINESTRING ((-11697161.8524083 4522341.60873851,-11696743.7695477 4522043.66463098))","172",, +"MULTILINESTRING ((-11698745.2811733 4524898.16140312,-11698452.1426159 4524898.16140312,-11698192.6429093 4524643.46724668,-11697942.754303 4524653.07834693,-11697755.3378483 4524576.18954498))","MULTILINESTRING ((-11698745.2811733 4524898.16140312,-11698452.1426159 4524898.16140312,-11698192.6429093 4524643.46724668,-11697942.754303 4524653.07834693,-11697755.3378483 4524576.18954498))","173",, +"MULTILINESTRING ((-11698187.8373592 4524134.07893381,-11697933.1432028 4523985.10688005))","MULTILINESTRING ((-11698187.8373592 4524134.07893381,-11697933.1432028 4523985.10688005))","174",, +"MULTILINESTRING ((-11697856.2544008 4523860.16257688,-11697683.2545965 4523754.44047422))","MULTILINESTRING ((-11697856.2544008 4523860.16257688,-11697683.2545965 4523754.44047422))","175",, +"MULTILINESTRING ((-11697620.7824449 4523658.32947179,-11697481.4214913 4523533.38516863))","MULTILINESTRING ((-11697620.7824449 4523658.32947179,-11697481.4214913 4523533.38516863))","176",, +"MULTILINESTRING ((-11698000.4209045 4525196.10551065,-11697760.1433984 4525133.63335907,-11697409.3382395 4525061.55010725))","MULTILINESTRING ((-11698000.4209045 4525196.10551065,-11697760.1433984 4525133.63335907,-11697409.3382395 4525061.55010725))","177",, +"MULTILINESTRING ((-11693991.6075549 4522213.70292952,-11692862.4784172 4521828.7138185))","MULTILINESTRING ((-11693991.6075549 4522213.70292952,-11692862.4784172 4521828.7138185))","178",, +"MULTILINESTRING ((-11695504.4338938 4521327.45282832,-11695411.4163905 4520872.7005898))","MULTILINESTRING ((-11695504.4338938 4521327.45282832,-11695411.4163905 4520872.7005898))","179",, +"MULTILINESTRING ((-11695556.1102845 4521653.01408998,-11694966.9994301 4520914.04170239))","MULTILINESTRING ((-11695556.1102845 4521653.01408998,-11694966.9994301 4520914.04170239))","180",, +"MULTILINESTRING ((-11694987.6699864 4520795.18600368,-11694749.958589 4520784.85072554))","MULTILINESTRING ((-11694987.6699864 4520795.18600368,-11694749.958589 4520784.85072554))","181",, +"MULTILINESTRING ((-11695129.7800609 4523076.69865489,-11694744.7909499 4522890.66364823,-11694669.8601833 4522789.89468628,-11694481.2413571 4522766.64031045,-11694135.0095392 4522596.108221))","MULTILINESTRING ((-11695129.7800609 4523076.69865489,-11694744.7909499 4522890.66364823,-11694669.8601833 4522789.89468628,-11694481.2413571 4522766.64031045,-11694135.0095392 4522596.108221))","182",, +"MULTILINESTRING ((-11697819.536199 4525391.80096007,-11696904.8640829 4525407.3038773))","MULTILINESTRING ((-11697819.536199 4525391.80096007,-11696904.8640829 4525407.3038773))","183",, +"MULTILINESTRING ((-11697129.0104277 4525097.89148774,-11696881.609707 4525096.59957797))","MULTILINESTRING ((-11697129.0104277 4525097.89148774,-11696881.609707 4525096.59957797))","184",, +"MULTILINESTRING ((-11696284.747394 4523778.20565919,-11695581.9484799 4523385.46508955,-11695473.4280593 4523375.12981141))","MULTILINESTRING ((-11696284.747394 4523778.20565919,-11695581.9484799 4523385.46508955,-11695473.4280593 4523375.12981141))","185",, +"MULTILINESTRING ((-11696486.2853179 4522532.80464233,-11696222.7357251 4522393.27838733))","MULTILINESTRING ((-11696486.2853179 4522532.80464233,-11696222.7357251 4522393.27838733))","186",, +"MULTILINESTRING ((-11696398.4354536 4522749.84548344,-11696171.0593343 4522615.48686752,-11696047.0359966 4522491.46352974,-11695923.0126588 4522450.12241715,-11695892.0068243 4522382.94310919,-11695814.4922382 4522207.24338066,-11695509.6015329 4521948.86142696))","MULTILINESTRING ((-11696398.4354536 4522749.84548344,-11696171.0593343 4522615.48686752,-11696047.0359966 4522491.46352974,-11695923.0126588 4522450.12241715,-11695892.0068243 4522382.94310919,-11695814.4922382 4522207.24338066,-11695509.6015329 4521948.86142696))","187",, +"MULTILINESTRING ((-11697256.2635399 4524760.05708326,-11696842.852414 4524749.72180511))","MULTILINESTRING ((-11697256.2635399 4524760.05708326,-11696842.852414 4524749.72180511))","188",, +"MULTILINESTRING ((-11696837.6847749 4524703.21305344,-11697101.2343677 4524543.01624215))","MULTILINESTRING ((-11696837.6847749 4524703.21305344,-11697101.2343677 4524543.01624215))","189",, +"MULTILINESTRING ((-11696682.6556027 4524661.87194085,-11695964.3537714 4524847.90694752))","MULTILINESTRING ((-11696682.6556027 4524661.87194085,-11695964.3537714 4524847.90694752))","190",, +"MULTILINESTRING ((-11695917.8450197 4524920.25389456,-11695685.3012614 4524920.25389456))","MULTILINESTRING ((-11695917.8450197 4524920.25389456,-11695685.3012614 4524920.25389456))","191",, +"MULTILINESTRING ((-11695561.2779236 4524956.42736807,-11695478.5956984 4525044.27723233,-11695333.9018043 4525059.78014956))","MULTILINESTRING ((-11695561.2779236 4524956.42736807,-11695478.5956984 4525044.27723233,-11695333.9018043 4525059.78014956))","192",, +"MULTILINESTRING ((-11697235.5929836 4525530.03530529,-11697003.0492253 4525524.86766622))","MULTILINESTRING ((-11697235.5929836 4525530.03530529,-11697003.0492253 4525524.86766622))","193",, +"MULTILINESTRING ((-11696796.3436623 4525607.54989141,-11696605.1410166 4525597.21461326))","MULTILINESTRING ((-11696796.3436623 4525607.54989141,-11696605.1410166 4525597.21461326))","194",, +"MULTILINESTRING ((-11697090.8990895 4525710.90267289,-11696734.3319934 4525876.26712326))","MULTILINESTRING ((-11697090.8990895 4525710.90267289,-11696734.3319934 4525876.26712326))","195",, +"MULTILINESTRING ((-11697804.0332817 4525483.52655363,-11697571.4895234 4525488.6941927))","MULTILINESTRING ((-11697804.0332817 4525483.52655363,-11697571.4895234 4525488.6941927))","196",, +"MULTILINESTRING ((-11696677.4879636 4524677.37485807,-11696553.4646258 4524610.19555011))","MULTILINESTRING ((-11696677.4879636 4524677.37485807,-11696553.4646258 4524610.19555011))","197",, +"MULTILINESTRING ((-11695587.116119 4524961.59500715,-11695442.4222249 4524961.59500715))","MULTILINESTRING ((-11695587.116119 4524961.59500715,-11695442.4222249 4524961.59500715))","198",, +"MULTILINESTRING ((-11695049.6816553 4525612.71753048,-11694879.1495658 4525592.04697418))","MULTILINESTRING ((-11695049.6816553 4525612.71753048,-11694879.1495658 4525592.04697418))","199",, +"MULTILINESTRING ((-11694574.2588604 4525576.54405696,-11694765.4615062 4525581.71169604))","MULTILINESTRING ((-11694574.2588604 4525576.54405696,-11694765.4615062 4525581.71169604))","200",, +"MULTILINESTRING ((-11697225.2577054 4525256.15043437,-11695871.336268 4525245.81515622,-11695576.7808408 4525447.35308011,-11694574.2588604 4525462.85599733))","MULTILINESTRING ((-11697225.2577054 4525256.15043437,-11695871.336268 4525245.81515622,-11695576.7808408 4525447.35308011,-11694574.2588604 4525462.85599733))","201",, +"MULTILINESTRING ((-11695499.2662547 4525566.20877882,-11695649.1277878 4525530.03530529))","MULTILINESTRING ((-11695499.2662547 4525566.20877882,-11695649.1277878 4525530.03530529))","202",, +"MULTILINESTRING ((-11695840.3304336 4525421.51488474,-11695938.515576 4525369.838494))","MULTILINESTRING ((-11695840.3304336 4525421.51488474,-11695938.515576 4525369.838494))","203",, +"MULTILINESTRING ((-11695892.0068243 4525468.02363641,-11695964.3537714 4525442.18544103))","MULTILINESTRING ((-11695892.0068243 4525468.02363641,-11695964.3537714 4525442.18544103))","204",, +"MULTILINESTRING ((-11697623.1659141 4525891.77004048,-11697142.5754803 4526026.12865641))","MULTILINESTRING ((-11697623.1659141 4525891.77004048,-11697142.5754803 4526026.12865641))","205",, +"MULTILINESTRING ((-11697090.8990895 4525948.6140703,-11697287.2693743 4525948.6140703))","MULTILINESTRING ((-11697090.8990895 4525948.6140703,-11697287.2693743 4525948.6140703))","206",, +"MULTILINESTRING ((-11696749.8349106 4526150.15199418,-11695556.1102845 4526584.23367641))","MULTILINESTRING ((-11696749.8349106 4526150.15199418,-11695556.1102845 4526584.23367641))","207",, +"MULTILINESTRING ((-11695680.1336223 4526625.574789,-11695292.5606917 4526770.26868307))","MULTILINESTRING ((-11695680.1336223 4526625.574789,-11695292.5606917 4526770.26868307))","208",, +"MULTILINESTRING ((-11698579.1791428 4525964.11698752,-11697837.6229357 4526310.34880548,-11697641.2526509 4526307.76498595,-11697517.2293131 4526436.95596279))","MULTILINESTRING ((-11698579.1791428 4525964.11698752,-11697837.6229357 4526310.34880548,-11697641.2526509 4526307.76498595,-11697517.2293131 4526436.95596279))","209",, +"MULTILINESTRING ((-11696953.956654 4526571.31457872,-11697129.6563826 4526467.96179724))","MULTILINESTRING ((-11696953.956654 4526571.31457872,-11697129.6563826 4526467.96179724))","210",, +"MULTILINESTRING ((-11697178.7489538 4526524.80582705,-11697661.9232072 4526232.83421937))","MULTILINESTRING ((-11697178.7489538 4526524.80582705,-11697661.9232072 4526232.83421937))","211",, +"MULTILINESTRING ((-11697186.5004124 4526338.77082039,-11696811.8465795 4526470.54561677,-11696723.9967153 4526558.39548104))","MULTILINESTRING ((-11697186.5004124 4526338.77082039,-11696811.8465795 4526470.54561677,-11696723.9967153 4526558.39548104))","212",, +"MULTILINESTRING ((-11696429.441288 4526610.07187177,-11696687.8232417 4526416.2854065))","MULTILINESTRING ((-11696429.441288 4526610.07187177,-11696687.8232417 4526416.2854065))","213",, +"MULTILINESTRING ((-11696178.8107929 4526646.24534529,-11696354.5105215 4526630.74242808))","MULTILINESTRING ((-11696178.8107929 4526646.24534529,-11696354.5105215 4526630.74242808))","214",, +"MULTILINESTRING ((-11698395.7279557 4525845.26128881,-11698496.4969177 4525710.90267289))","MULTILINESTRING ((-11698395.7279557 4525845.26128881,-11698496.4969177 4525710.90267289))","215",, +"MULTILINESTRING ((-11698191.6062123 4525687.64829705,-11698008.1550252 4525687.64829705))","MULTILINESTRING ((-11698191.6062123 4525687.64829705,-11698008.1550252 4525687.64829705))","216",, +"MULTILINESTRING ((-11697959.062454 4525974.45226566,-11697708.4319589 4526144.98435511,-11697555.9866062 4526209.57984354,-11697455.2176442 4526204.41220446))","MULTILINESTRING ((-11697959.062454 4525974.45226566,-11697708.4319589 4526144.98435511,-11697555.9866062 4526209.57984354,-11697455.2176442 4526204.41220446))","217",, +"MULTILINESTRING ((-11697537.8998694 4526124.31379882,-11697863.4611311 4525938.27879215))","MULTILINESTRING ((-11697537.8998694 4526124.31379882,-11697863.4611311 4525938.27879215))","218",, +"MULTILINESTRING ((-11697625.7497337 4526005.45810011,-11697488.8072982 4525997.7066415))","MULTILINESTRING ((-11697625.7497337 4526005.45810011,-11697488.8072982 4525997.7066415))","219",, +"MULTILINESTRING ((-11697649.0041095 4525935.69497261,-11697773.0274473 4525915.02441631))","MULTILINESTRING ((-11697649.0041095 4525935.69497261,-11697773.0274473 4525915.02441631))","220",, +"MULTILINESTRING ((-11697984.9006493 4526062.30212992,-11698111.5078066 4525987.37136335))","MULTILINESTRING ((-11697984.9006493 4526062.30212992,-11698111.5078066 4525987.37136335))","221",, +"MULTILINESTRING ((-11697592.1600797 4523995.24650029,-11697225.2577054 4523628.34412603,-11696765.3378278 4523364.79453326,-11696341.5914238 4523168.42424844,-11695788.6540428 4522925.54521196))","MULTILINESTRING ((-11697592.1600797 4523995.24650029,-11697225.2577054 4523628.34412603,-11696765.3378278 4523364.79453326,-11696341.5914238 4523168.42424844,-11695788.6540428 4522925.54521196))","222",, +"MULTILINESTRING ((-11696176.2269734 4523080.57438418,-11695995.3596058 4522703.33673177))","MULTILINESTRING ((-11696176.2269734 4523080.57438418,-11695995.3596058 4522703.33673177))","223",, +"MULTILINESTRING ((-11696605.1410165 4523245.93883455,-11696475.9500397 4523034.06563251))","MULTILINESTRING ((-11696605.1410165 4523245.93883455,-11696475.9500397 4523034.06563251))","224",, +"MULTILINESTRING ((-11696522.4587914 4522961.71868548,-11696491.4529569 4522848.03062585))","MULTILINESTRING ((-11696522.4587914 4522961.71868548,-11696491.4529569 4522848.03062585))","225",, +"MULTILINESTRING ((-11696439.7765662 4522972.05396362,-11696403.6030927 4522894.53937752))","MULTILINESTRING ((-11696439.7765662 4522972.05396362,-11696403.6030927 4522894.53937752))","226",, +"MULTILINESTRING ((-11700765.0904712 4521762.82642029,-11700486.0379612 4522145.23171177))","MULTILINESTRING ((-11700765.0904712 4521762.82642029,-11700486.0379612 4522145.23171177))","227",, +"MULTILINESTRING ((-11700263.829481 4523080.57438418,-11700341.3440671 4522501.79880788))","MULTILINESTRING ((-11700263.829481 4523080.57438418,-11700341.3440671 4522501.79880788))","228",, +"MULTILINESTRING ((-11699819.4125206 4521561.2884964,-11699814.2448815 4521354.58293344))","MULTILINESTRING ((-11699819.4125206 4521561.2884964,-11699814.2448815 4521354.58293344))","229",, +"MULTILINESTRING ((-11700527.3790738 4522336.43435752,-11700517.0437956 4522072.88476474,-11700351.6793453 4521907.52031437,-11700320.6735108 4521912.68795344,-11700263.829481 4522134.89643363,-11700170.8119777 4522145.23171177,-11700144.9737823 4522098.7229601,-11700144.9737823 4521850.67628455))","MULTILINESTRING ((-11700527.3790738 4522336.43435752,-11700517.0437956 4522072.88476474,-11700351.6793453 4521907.52031437,-11700320.6735108 4521912.68795344,-11700263.829481 4522134.89643363,-11700170.8119777 4522145.23171177,-11700144.9737823 4522098.7229601,-11700144.9737823 4521850.67628455))","230",, +"MULTILINESTRING ((-11699188.9605536 4526108.81088159,-11699070.1048549 4526196.66074585))","MULTILINESTRING ((-11699188.9605536 4526108.81088159,-11699070.1048549 4526196.66074585))","231",, +"MULTILINESTRING ((-11698956.4167953 4526155.31963326,-11698878.9022091 4526026.12865641))","MULTILINESTRING ((-11698956.4167953 4526155.31963326,-11698878.9022091 4526026.12865641))","232",, diff --git a/data/testGJSON_dikemountain.geojson b/data/testGJSON_dikemountain.geojson new file mode 100644 index 0000000..67ad420 --- /dev/null +++ b/data/testGJSON_dikemountain.geojson @@ -0,0 +1,239 @@ +{ +"type": "FeatureCollection", +"name": "testGJSON_dikemountain", +"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:EPSG::26911" } }, +"features": [ +{ "type": "Feature", "properties": { "id": "1", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11698939.605606300756335, 4526535.051913239993155 ], [ -11697839.134628500789404, 4528053.605751619674265 ], [ -11697839.134628500789404, 4528053.605751619674265 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "2", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11698410.995092900469899, 4526751.301668710075319 ], [ -11697238.44086330011487, 4527673.967292020097375 ], [ -11696733.858100600540638, 4528207.383355500176549 ], [ -11695940.942330500110984, 4528803.271570559591055 ], [ -11694725.138149799779058, 4529586.576240349560976 ], [ -11694725.138149799779058, 4529586.576240349560976 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "3", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11697348.96851610019803, 4526539.857463370077312 ], [ -11695844.83132809959352, 4527549.022988869808614 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "4", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11694785.207526300102472, 4527944.279486349783838 ], [ -11694602.596621699631214, 4528059.612689269706607 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "5", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11694314.26361439935863, 4528194.168092669919133 ], [ -11693651.097697699442506, 4528588.223202619701624 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "6", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11693497.320093799382448, 4528660.306454439647496 ], [ -11693343.542489899322391, 4528804.472958089783788 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "7", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11695491.623394200578332, 4527266.69691922981292 ], [ -11695222.512587400153279, 4527362.807921660132706 ], [ -11694886.124078899621964, 4527646.335378820076585 ], [ -11694415.180167, 4527877.001784649677575 ], [ -11694088.40275870077312, 4527953.890586599707603 ], [ -11693848.125252600759268, 4528136.50149121042341 ], [ -11693737.597599800676107, 4528223.001393400132656 ], [ -11693492.514543699100614, 4528319.112395820207894 ], [ -11693285.875888399779797, 4528381.584547399543226 ], [ -11692887.01522840000689, 4528679.528654930181801 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "8", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11694078.791658500209451, 4527617.50207810010761 ], [ -11693136.903834700584412, 4528150.918141569942236 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "9", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11692939.876279700547457, 4528251.834694120101631 ], [ -11692790.904225900769234, 4528338.334596309810877 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "10", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11694758.777000699192286, 4527153.766491379588842 ], [ -11694287.833088800311089, 4527437.293948540464044 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "11", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11692550.626719899475574, 4528729.986931200139225 ], [ -11692166.182710200548172, 4529032.736588859930634 ], [ -11691642.377746900543571, 4529402.763948200270534 ], [ -11691334.822539100423455, 4529647.847004399634898 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "12", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11692036.43285690061748, 4528307.098520520143211 ], [ -11691916.294103799387813, 4528379.181772340089083 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "13", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11691805.766451, 4528470.487224649637938 ], [ -11691676.016597799956799, 4528585.820427560247481 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "13", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11698177.925912100821733, 4527410.863422869704664 ], [ -11698081.814909599721432, 4527509.377200360409915 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "14", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11697973.690031899139285, 4527583.86322723980993 ], [ -11697889.59290480054915, 4527679.974229670129716 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "15", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11697827.120753200724721, 4527785.69633234012872 ], [ -11697726.204200599342585, 4527917.848960679955781 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "15", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11697524.37109550088644, 4528696.348080350086093 ], [ -11696892.44125460088253, 4529712.721931040287018 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "16", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11697329.746315600350499, 4529131.250366340391338 ], [ -11696918.871780199930072, 4530015.471588689833879 ], [ -11696909.26068, 4530162.040867390111089 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "17", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11695075.94330869987607, 4527031.224963280372322 ], [ -11694929.37403, 4527081.683239550329745 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "17", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11695342.651340400800109, 4527110.516540279611945 ], [ -11695241.734787900000811, 4527134.544290889985859 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "18", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11695047.110007900744677, 4526841.405733480118215 ], [ -11694323.874714700505137, 4527175.391466920264065 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "19", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11694114.8332844004035, 4527204.224767649546266 ], [ -11693934.625154800713062, 4527341.182946110144258 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "20", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11694556.943895500153303, 4529858.089822210371494 ], [ -11693968.26400570012629, 4530295.394883260130882 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "22", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11690803.809250699356198, 4529745.159394360147417 ], [ -11690549.115094300359488, 4529971.020250069908798 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "23", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11690265.587637100368738, 4529966.214699939824641 ], [ -11689448.644116500392556, 4530605.352866089902818 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "24", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11691553.475069699808955, 4528596.632915340363979 ], [ -11688977.700204599648714, 4529937.381399209611118 ], [ -11688598.061745, 4529999.853550789877772 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "25", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11691678.419372800737619, 4527597.078490080311894 ], [ -11691390.086365500465035, 4527822.939345790073276 ], [ -11691106.558908399194479, 4527933.466998579911888 ], [ -11690803.809250699356198, 4528188.161155009642243 ], [ -11690270.393187200650573, 4528486.105262540280819 ], [ -11689934.004678700119257, 4528562.994064490310848 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "26", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11691683.224922899156809, 4527472.134186919778585 ], [ -11691442.947416899725795, 4527558.634089110419154 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "27", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11689780.227074900642037, 4528769.632719709537923 ], [ -11689568.782869499176741, 4528875.354822379536927 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "27", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11693731.590662200003862, 4527512.981362950056791 ], [ -11693579.014445800334215, 4527580.259064650163054 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "28", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11693482.903443399816751, 4526700.843392429873347 ], [ -11693134.501059599220753, 4526758.509993890300393 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "29", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11693007.15398140065372, 4526693.635067249648273 ], [ -11692653.946047499775887, 4526842.607121010310948 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "30", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11692550.626719800755382, 4526948.329223680309951 ], [ -11692399.251891, 4526948.329223680309951 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "31", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11693461.278467899188399, 4526561.482438909821212 ], [ -11694386.346866199746728, 4526294.774407169781625 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "32", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11693982.680656, 4526169.830104020424187 ], [ -11694126.847159700468183, 4525857.469346120022237 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "36", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11692340.383902, 4527051.047857530415058 ], [ -11692175.793810399249196, 4527179.59632327966392 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "36", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11694675.881261, 4525775.174300289712846 ], [ -11694286.63170119933784, 4525808.813151139765978 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "37", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11694930.575417499989271, 4525813.618701259605587 ], [ -11695290.991676600649953, 4525703.091048469766974 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "38", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11694930.575417499989271, 4526105.555871140211821 ], [ -11694729.943699900060892, 4526175.236347899772227 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "39", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11695745.116163099184632, 4525705.49382353015244 ], [ -11695495.227556800469756, 4525828.035351620055735 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "40", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11695862.852141, 4526181.243285549804568 ], [ -11695307.811102, 4526375.868065469898283 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "41", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11693546.57698250003159, 4525772.771525230258703 ], [ -11693962.257068, 4525518.077368790283799 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "42", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11694188.117923699319363, 4525465.21631745994091 ], [ -11694558.145283099263906, 4525357.091439729556441 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "43", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11694207.340124199166894, 4525590.160620619542897 ], [ -11693911.798791699111462, 4525626.202246519736946 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "45", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11696255.705863500013947, 4526081.528120529837906 ], [ -11696532.02499539963901, 4525951.778267259709537 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "46", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11696419.094567600637674, 4525747.542387099936604 ], [ -11695525.262245, 4526110.361421260051429 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "47", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11696308.566914800554514, 4526720.666286679916084 ], [ -11696063.483858600258827, 4526917.693841660395265 ], [ -11695712.678699700161815, 4526975.360443119890988 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "48", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11695803.984152099117637, 4526730.277386929839849 ], [ -11696068.289408700540662, 4526682.221885710023344 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "49", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11695200.887611800804734, 4529849.079415730200708 ], [ -11695373.887416200712323, 4529632.829660270363092 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "50", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11699256.771914299577475, 4529868.301616200245917 ], [ -11699141.43871139921248, 4527619.304159379564226 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "51", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11698929.994506100192666, 4527936.470467389561236 ], [ -11699151.049811599776149, 4527532.80425718985498 ], [ -11699179.883112400770187, 4527042.638144800439477 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "53", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11698821.869628300890326, 4527597.679183829575777 ], [ -11698881.939004799351096, 4527285.31842593010515 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "54", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11699576.340997399762273, 4527417.47105426993221 ], [ -11699338.466266399249434, 4526708.652411360293627 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "55", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11700119.368161100894213, 4527559.234782850369811 ], [ -11699797.396303, 4527054.652020109817386 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "56", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11699499.452195400372148, 4526682.221885690465569 ], [ -11699364.896792, 4526292.972325859591365 ], [ -11699355.285691799595952, 4525711.500761169940233 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "57", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11699792.590752800926566, 4526129.583621730096638 ], [ -11699533.091046299785376, 4526259.333475009538233 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "59", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11699907.923955800011754, 4526687.027435819618404 ], [ -11699826.229603700339794, 4526365.055577679537237 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "59", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11700412.506718499585986, 4528705.358486809767783 ], [ -11700162.61811220087111, 4527749.054012649692595 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "60", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11699807.007403200492263, 4527369.415553060360253 ], [ -11699686.868650199845433, 4528258.442325520329177 ], [ -11699547.507696699351072, 4528594.830834019929171 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "61", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11699975.201657500118017, 4529637.635210369713604 ], [ -11700205.868063300848007, 4528839.913890209980309 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "62", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11700921.895031400024891, 4531627.132960639894009 ], [ -11700138.590361600741744, 4529988.440369229763746 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "63", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11701085.283735500648618, 4531963.521469140425324 ], [ -11700993.978283200412989, 4531790.521664770320058 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "64", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11700859.422879800200462, 4530593.939684529788792 ], [ -11700566.284322399646044, 4530017.273669959977269 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "65", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11699403.341193, 4530468.995381380431354 ], [ -11699398.535642899572849, 4529877.912716439925134 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "66", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11700551.867672, 4529632.829660249873996 ], [ -11700354.84011710062623, 4529301.246701870113611 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "67", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11699840.646254099905491, 4529599.190809399820864 ], [ -11699739.729701500386, 4529325.274452470242977 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "68", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11701719.616351500153542, 4529012.913694580085576 ], [ -11700955.533882200717926, 4527585.665308520197868 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "69", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11701142.950337, 4528633.275234989821911 ], [ -11701008.394933599978685, 4528364.164428190328181 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "70", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11701080.478185400366783, 4528897.580491670407355 ], [ -11701027.617134099826217, 4528710.164036929607391 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "71", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11700338.020691599696875, 4527244.471249899826944 ], [ -11700128.979261400178075, 4526614.944183990359306 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "72", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11700299.57629070058465, 4527674.567985760048032 ], [ -11700289.965190399438143, 4527511.179281629621983 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "73", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11701438.491669399663806, 4527556.832007789984345 ], [ -11701272.700190300121903, 4527398.248853780329227 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "74", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11700869.033980099484324, 4527722.623486979864538 ], [ -11700784.936852900311351, 4527451.109905119985342 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "75", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11701150.15866219997406, 4527674.567985760048032 ], [ -11700869.033980099484324, 4527415.068279209546745 ], [ -11700609.534273499622941, 4526912.888291520066559 ], [ -11700210.673613399267197, 4526338.625052009709179 ], [ -11700150.604236900806427, 4526249.722374759614468 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "77", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11701616.29702389985323, 4527448.707130050286651 ], [ -11700744.089676899835467, 4526559.680357590317726 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "78", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11701320.755691500380635, 4526747.096812319941819 ], [ -11700789.742403099313378, 4526216.083523909561336 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "79", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11700852.214554600417614, 4526557.277582529932261 ], [ -11700381.270642699673772, 4526093.541995810344815 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "80", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11701111.714261200278997, 4526660.596910139545798 ], [ -11700902.67283090017736, 4526451.555479859933257 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "81", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11702077.629835600033402, 4527708.206836610101163 ], [ -11701957.491082599386573, 4527604.887508999556303 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "82", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11702156.921412600204349, 4527580.859758390113711 ], [ -11702043.990984700620174, 4527491.957081150263548 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "80", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11701217.436363799497485, 4526946.527142359875143 ], [ -11701034.825459200888872, 4526735.082937019877136 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "81", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11701904.630031200125813, 4527662.554110459983349 ], [ -11701424.075019100680947, 4527109.915846490301192 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "82", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11701875.796730499714613, 4527532.804257179610431 ], [ -11701770.074627799913287, 4527393.443303659558296 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "84", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11702341.93509230017662, 4527893.220516280271113 ], [ -11702192.963038500398397, 4527811.526164219714701 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "87", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11699367.299567099660635, 4529676.079611339606345 ], [ -11699593.16042280010879, 4528546.775332800112665 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "88", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11699343.271816499531269, 4529358.913303320296109 ], [ -11699458.605019399896264, 4529128.246897489763796 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "89", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11702207.379688899964094, 4526528.444281799718738 ], [ -11701380.825068, 4526139.194721969775856 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "90", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11702630.268099499866366, 4526638.97193458955735 ], [ -11702361.157292699441314, 4526514.027631440199912 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "91", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11703288.628466200083494, 4526864.832790300250053 ], [ -11702803.267903899773955, 4526643.777484719641507 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "92", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11703509.683771800249815, 4527148.36024747043848 ], [ -11703735.54462750069797, 4527138.749147219583392 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "93", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11702207.379688899964094, 4526768.721787869930267 ], [ -11702072.824285499751568, 4526696.638536049984396 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "94", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11704148.821937900036573, 4527342.985027389600873 ], [ -11703627.419749699532986, 4527049.846469979733229 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "95", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11703959.002708099782467, 4526848.013364880345762 ], [ -11704244.93294039927423, 4526636.569159530103207 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "96", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11700399.291455699130893, 4526124.778071600012481 ], [ -11700428.124756399542093, 4525898.9172158902511 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "97", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11701072.068472700193524, 4525966.194917590357363 ], [ -11701245.068277, 4525956.583817349746823 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "98", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11701360.40148, 4526008.243481149896979 ], [ -11701532.199896799400449, 4526007.042093619704247 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "99", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11701659.546975, 4526065.910082610324025 ], [ -11701846.963429799303412, 4526109.160033700056374 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "100", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11702013.956296499818563, 4526189.652998239733279 ], [ -11701828.942616799846292, 4526187.250223180279136 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "101", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11701730.428839299827814, 4526219.687686489894986 ], [ -11701849.366204800084233, 4526218.486298969946802 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "102", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11702387.587818399071693, 4526374.666677909903228 ], [ -11702165.331125300377607, 4526195.65993588976562 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "103", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11702685.531925899907947, 4526099.548933460377157 ], [ -11702480.094658199697733, 4525955.38242981955409 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "104", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11702584.615373399108648, 4525993.826830790378153 ], [ -11702393.594756100326777, 4525883.299177999608219 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "105", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11702532.955709600821137, 4525715.104923750273883 ], [ -11702254.233802499249578, 4525639.417509339749813 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "106", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11702225.400501800701022, 4525482.035742860287428 ], [ -11702080.032610600814223, 4525365.501152410171926 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "107", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11701564.637360099703074, 4525621.396696380339563 ], [ -11701897.421706, 4525620.19530885014683 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "108", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11701551.42209729924798, 4525396.136534440331161 ], [ -11701690.783050799742341, 4525381.719884069636464 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "109", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11701601.880373600870371, 4525334.865770390257239 ], [ -11701418.068081399425864, 4525330.060220270417631 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "110", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11700966.046023100614548, 4524666.293609750457108 ], [ -11701350.49003279954195, 4524445.238304159604013 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "112", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11701235.156829899176955, 4525055.54316958039999 ], [ -11701763.767343299463391, 4524805.65456326957792 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "113", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11701499.462086599320173, 4524406.793903189711273 ], [ -11702268.350106, 4523974.294392259791493 ], [ -11702345.238908, 4523849.350089100189507 ], [ -11702816.182819899171591, 4523637.9058837601915 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "114", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11700581.6020133998245, 4524522.127106100320816 ], [ -11700653.685265200212598, 4524387.57170270010829 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "105", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11700881.948896, 4524216.974673390388489 ], [ -11701095.795876400545239, 4524101.641470479778945 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "106", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11700793.046218799427152, 4524173.724722299724817 ], [ -11701117.420852, 4524007.933243109844625 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "116", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11700360.546707799658179, 4523839.738988859578967 ], [ -11700752.199042700231075, 4523515.364355660043657 ] ] ] } }, +{ "type": "Feature", "properties": { "id": "117", "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11700129.880302, 4523880.586164889857173 ], [ -11700185.144128400832415, 4523368.795076959766448 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11699407.245702499523759, 4524090.828982709906995 ], [ -11698647.968783300369978, 4522625.136195669881999 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11698758.496436100453138, 4522774.108249429613352 ], [ -11697999.219516899436712, 4521611.165120050311089 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11699561.023306399583817, 4523422.857515829615295 ], [ -11699416.856802700087428, 4522687.608347250148654 ], [ -11699363.995751399546862, 4522000.414679880253971 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11699416.856802700087428, 4523461.301916800439358 ], [ -11699171.773746499791741, 4522783.719349679537117 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11699878.189614400267601, 4524081.21788245998323 ], [ -11699657.13430880010128, 4523567.024019470438361 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11699782.078612, 4522860.608151620253921 ], [ -11699767.661961600184441, 4522495.386342390440404 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11700344.327976200729609, 4523427.663065950386226 ], [ -11700800.855237700045109, 4522649.163946280255914 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11700969.049492, 4523283.49656230956316 ], [ -11700930.605091, 4523345.968713879585266 ], [ -11701190.104797499254346, 4523062.441256719641387 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11702996.991643199697137, 4523764.051574449986219 ], [ -11702799.964088199660182, 4523528.579618499614298 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11703823.546264100819826, 4523072.052356960251927 ], [ -11703179.602547800168395, 4523494.940767649561167 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11701041.132743800058961, 4521976.386929280124605 ], [ -11701132.43819610029459, 4521774.553824179805815 ], [ -11701363.104601899161935, 4521572.7207190701738 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11700810.466337900608778, 4522452.136391299776733 ], [ -11700858.521839199587703, 4522259.914386440068483 ], [ -11700945.021741300821304, 4522053.275731219910085 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11700401.994577599689364, 4522298.358787409961224 ], [ -11700647.077633799985051, 4521644.80397090036422 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11700844.105188800022006, 4521418.943115189671516 ], [ -11700594.216582499444485, 4521116.193457540124655 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11700757.605286600068212, 4521471.804166530258954 ], [ -11700844.105188800022006, 4521145.026758270338178 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11699993.522817300632596, 4521856.248176240362227 ], [ -11699993.522817300632596, 4521572.7207190701738 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11699974.300616800785065, 4521169.054508879780769 ], [ -11699969.49506670050323, 4521409.332014949992299 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11699315.94025019928813, 4521683.24837187025696 ], [ -11699277.495849199593067, 4521193.082259479910135 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11699527.384455500170588, 4521769.748274059966207 ], [ -11699541.801105899736285, 4521399.720914710313082 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11699258.273648699745536, 4520724.541122639551759 ], [ -11699258.273648699745536, 4520546.735768149606884 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11699324.349962899461389, 4520701.714759569615126 ], [ -11699327.954125499352813, 4520501.083042000420392 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11701337.875463800504804, 4524954.626617039553821 ], [ -11701458.014216799288988, 4524851.307289429940283 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11701347.486564, 4524846.501739310100675 ], [ -11701510.875268200412393, 4524812.862888460047543 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11701767.972199600189924, 4525012.293218489736319 ], [ -11702003.444155599921942, 4524988.265467889606953 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11701945.777554100379348, 4525050.737619469873607 ], [ -11702061.110757099464536, 4525031.515418980270624 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11702229.305011300370097, 4525062.75149476993829 ], [ -11701928.95812870003283, 4525098.793120680376887 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11701806.416600599884987, 4525106.001445859670639 ], [ -11701883.305402599275112, 4525057.945944650098681 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11702330.221563899889588, 4525238.154074200429022 ], [ -11702037.08300649933517, 4525161.265272259712219 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11702027.471906200051308, 4525271.792925049550831 ], [ -11702762.721074799075723, 4525202.112448289990425 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11702683.429497800767422, 4524997.876568130217493 ], [ -11702471.985292399302125, 4524834.487863999791443 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11702289.374387800693512, 4524675.904709990136325 ], [ -11702565.693519800901413, 4524668.696384809911251 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11702378.27706510014832, 4524625.446433720178902 ], [ -11702471.985292399302125, 4524512.516005869954824 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11702366.263189800083637, 4524243.405199060216546 ], [ -11702135.596783900633454, 4524406.793903189711273 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11702001.041380500420928, 4524337.113426430150867 ], [ -11702118.777358500286937, 4524257.82184942997992 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11702159.62453450076282, 4524558.168732020072639 ], [ -11702272.554962400346994, 4524474.071604889817536 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11702145.207884199917316, 4524450.04385428968817 ], [ -11702255.735537, 4524377.960602469742298 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11703542.421582, 4525168.473597439937294 ], [ -11703064.2693448998034, 4525285.008187890052795 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11703505.178568599745631, 4525168.473597439937294 ], [ -11703292.532975699752569, 4525139.640296709723771 ], [ -11703156.776184799149632, 4525097.591733150184155 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11703566.449332600459456, 4525614.188371210359037 ], [ -11703317.762113800272346, 4525516.875981249846518 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11703352.602352200075984, 4525389.528903029859066 ], [ -11703107.519296, 4525382.320577849633992 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11703168.790060099214315, 4525739.132674369961023 ], [ -11703053.456857100129128, 4525656.236934769898653 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11702972.963892599567771, 4526200.465486019849777 ], [ -11702810.776576, 4526166.826635169796646 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11703006.602743500843644, 4526045.486494610086083 ], [ -11702833.60293909907341, 4526166.826635169796646 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11702085.138507699593902, 4522822.16375065036118 ], [ -11701739.138898899778724, 4522536.233518430031836 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11703798.317126, 4523021.59408069960773 ], [ -11704250.038837399333715, 4522819.760975589975715 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11704778.649350700899959, 4523598.260095270350575 ], [ -11704509.538543900474906, 4523756.843249269761145 ], [ -11704350.955389900133014, 4523728.009948549792171 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11702678.623947700485587, 4522550.650168789550662 ], [ -11702813.179351100698113, 4522800.538775109685957 ], [ -11703043.845756899565458, 4523184.982784819789231 ], [ -11703015.012456199154258, 4523295.510437619872391 ], [ -11702765.123849900439382, 4523444.482491379603744 ], [ -11702659.401747200638056, 4523430.065841020084918 ], [ -11702419.124241100624204, 4523506.954642959870398 ], [ -11702150.013434300199151, 4523564.621244420297444 ], [ -11702001.041380599141121, 4523482.926892350427806 ], [ -11701626.208471100777388, 4523482.926892350427806 ], [ -11701520.486368399113417, 4523367.593689439818263 ], [ -11701467.625317100435495, 4523324.343738339841366 ], [ -11701390.736515099182725, 4523314.732638100162148 ], [ -11701309.042163100093603, 4523285.899337369948626 ], [ -11701280.208862299099565, 4523045.621831299737096 ], [ -11701241.76446139998734, 4522834.177625959739089 ], [ -11701054.348006600514054, 4522656.372271469794214 ], [ -11700842.903801299631596, 4522617.927870489656925 ], [ -11700751.598349, 4522488.17801721021533 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11701001.486955299973488, 4522766.899924259632826 ], [ -11700799.653850199654698, 4522680.40002206992358 ], [ -11700713.153948, 4522742.872173650190234 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11698983.155904300510883, 4522620.330645560286939 ], [ -11698858.211601100862026, 4522207.053335109725595 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11698944.711503300815821, 4522178.22003438975662 ], [ -11698901.461552200838923, 4521966.775829040445387 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11698790.933899400755763, 4521971.581379160284996 ], [ -11698243.101185599341989, 4520630.832895279861987 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11698541.045293100178242, 4521707.276122479699552 ], [ -11698483.378691699355841, 4520899.943702080287039 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11697892.296026699244976, 4521563.109618839807808 ], [ -11697776.962823800742626, 4521452.581966049969196 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11698228.684535199776292, 4522500.191892519593239 ], [ -11698219.073435, 4522327.192088150419295 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11697546.296418, 4522082.109031960368156 ], [ -11697157.046858200803399, 4521447.776415930129588 ], [ -11696950.408202899619937, 4520909.554802319966257 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11696407.381039200350642, 4520726.943897710181773 ], [ -11696253.603435300290585, 4520505.88859212026 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11697161.852408299222589, 4522341.608738509938121 ], [ -11696743.769547700881958, 4522043.664630980230868 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11698745.281173299998045, 4524898.161403119564056 ], [ -11698452.142615899443626, 4524898.161403119564056 ], [ -11698192.642909299582243, 4524643.467246679589152 ], [ -11697942.754303, 4524653.078346930444241 ], [ -11697755.337848300114274, 4524576.189544980414212 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11698187.837359199300408, 4524134.078933809883893 ], [ -11697933.143202800303698, 4523985.10688005015254 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11697856.254400800913572, 4523860.162576880306005 ], [ -11697683.254596499726176, 4523754.440474219620228 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11697620.782444899901748, 4523658.329471790231764 ], [ -11697481.421491300687194, 4523533.385168629698455 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11698000.420904500409961, 4525196.105510650202632 ], [ -11697760.143398400396109, 4525133.633359069935977 ], [ -11697409.338239500299096, 4525061.550107249990106 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11693991.607554899528623, 4522213.702929520048201 ], [ -11692862.478417199105024, 4521828.713818499818444 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11695504.433893799781799, 4521327.452828319743276 ], [ -11695411.416390499100089, 4520872.70058980025351 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11695556.110284499824047, 4521653.01408998016268 ], [ -11694966.999430099502206, 4520914.041702389717102 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11694987.66998640075326, 4520795.186003680340946 ], [ -11694749.958589, 4520784.850725539959967 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11695129.780060900375247, 4523076.698654890060425 ], [ -11694744.790949899703264, 4522890.663648230023682 ], [ -11694669.860183300450444, 4522789.894686279818416 ], [ -11694481.24135709926486, 4522766.640310450457036 ], [ -11694135.009539199993014, 4522596.108221 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11697819.536199, 4525391.800960070453584 ], [ -11696904.864082900807261, 4525407.303877299651504 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11697129.010427700355649, 4525097.891487739980221 ], [ -11696881.609707, 4525096.599577969871461 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11696284.747394, 4523778.205659190192819 ], [ -11695581.94847990013659, 4523385.465089550241828 ], [ -11695473.428059300407767, 4523375.129811409860849 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11696486.285317899659276, 4522532.804642329923809 ], [ -11696222.735725099220872, 4522393.278387329541147 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11696398.435453599318862, 4522749.845483439974487 ], [ -11696171.059334300458431, 4522615.486867520026863 ], [ -11696047.035996599122882, 4522491.463529740460217 ], [ -11695923.012658800929785, 4522450.122417150065303 ], [ -11695892.006824299693108, 4522382.943109190091491 ], [ -11695814.492238199338317, 4522207.243380660191178 ], [ -11695509.601532900705934, 4521948.861426959745586 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11697256.263539899140596, 4524760.057083260267973 ], [ -11696842.852414, 4524749.721805109642446 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11696837.684774899855256, 4524703.213053439743817 ], [ -11697101.23436770029366, 4524543.016242150217295 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11696682.655602699145675, 4524661.871940850280225 ], [ -11695964.353771399706602, 4524847.906947519630194 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11695917.845019700005651, 4524920.253894560039043 ], [ -11695685.301261400803924, 4524920.253894560039043 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11695561.277923600748181, 4524956.42736806999892 ], [ -11695478.595698399469256, 4525044.277232330292463 ], [ -11695333.901804300025105, 4525059.780149560421705 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11697235.592983599752188, 4525530.035305289551616 ], [ -11697003.049225300550461, 4525524.867666220292449 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11696796.343662299215794, 4525607.549891410395503 ], [ -11696605.141016600653529, 4525597.214613259769976 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11697090.899089500308037, 4525710.902672889642417 ], [ -11696734.331993399187922, 4525876.267123259603977 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11697804.03328170068562, 4525483.526553629897535 ], [ -11697571.489523399621248, 4525488.694192700088024 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11696677.487963600084186, 4524677.374858070164919 ], [ -11696553.464625800028443, 4524610.195550110191107 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11695587.116119, 4524961.595007150433958 ], [ -11695442.422224899753928, 4524961.595007150433958 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11695049.681655300781131, 4525612.71753047965467 ], [ -11694879.149565799161792, 4525592.046974180266261 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11694574.25886039994657, 4525576.544056960381567 ], [ -11694765.461506199091673, 4525581.711696039885283 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11697225.257705399766564, 4525256.150434370152652 ], [ -11695871.336268, 4525245.815156220458448 ], [ -11695576.780840799212456, 4525447.35308010969311 ], [ -11694574.25886039994657, 4525462.855997329577804 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11695499.26625470072031, 4525566.208778820000589 ], [ -11695649.127787800505757, 4525530.035305289551616 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11695840.33043359965086, 4525421.514884740114212 ], [ -11695938.515576, 4525369.838494 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11695892.006824299693108, 4525468.023636410012841 ], [ -11695964.353771399706602, 4525442.185441030189395 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11697623.165914099663496, 4525891.770040480419993 ], [ -11697142.575480299070477, 4526026.128656409680843 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11697090.899089500308037, 4525948.614070300012827 ], [ -11697287.269374299794436, 4525948.614070300012827 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11696749.834910599514842, 4526150.151994179934263 ], [ -11695556.110284499824047, 4526584.233676410280168 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11695680.133622299879789, 4526625.57478899974376 ], [ -11695292.560691699385643, 4526770.268683070316911 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11698579.17914279922843, 4525964.116987519897521 ], [ -11697837.622935699298978, 4526310.348805479705334 ], [ -11697641.252650899812579, 4526307.764985949732363 ], [ -11697517.229313099756837, 4526436.955962790176272 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11696953.956654, 4526571.314578720368445 ], [ -11697129.656382599845529, 4526467.961797240190208 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11697178.748953800648451, 4526524.805827049538493 ], [ -11697661.923207199200988, 4526232.834219370037317 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11697186.500412400811911, 4526338.770820390433073 ], [ -11696811.846579499542713, 4526470.545616770163178 ], [ -11696723.996715299785137, 4526558.395481039769948 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11696429.441288, 4526610.071871769614518 ], [ -11696687.823241699486971, 4526416.285406500101089 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11696178.810792900621891, 4526646.245345289818943 ], [ -11696354.510521499440074, 4526630.742428080178797 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11698395.727955700829625, 4525845.261288809590042 ], [ -11698496.496917700394988, 4525710.902672889642417 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11698191.606212299317122, 4525687.64829705003649 ], [ -11698008.155025200918317, 4525687.64829705003649 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11697959.062454, 4525974.452265660278499 ], [ -11697708.431958900764585, 4526144.984355109743774 ], [ -11697555.986606199294329, 4526209.579843539744616 ], [ -11697455.217644199728966, 4526204.412204460240901 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11697537.899869399145246, 4526124.313798819668591 ], [ -11697863.461131099611521, 4525938.278792150318623 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11697625.74973369948566, 4526005.458100110292435 ], [ -11697488.807298200204968, 4525997.706641499884427 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11697649.004109499976039, 4525935.694972610101104 ], [ -11697773.027447300031781, 4525915.024416309781373 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11697984.900649299845099, 4526062.30212991964072 ], [ -11698111.507806599140167, 4525987.371363350190222 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11697592.160079700872302, 4523995.246500289998949 ], [ -11697225.257705399766564, 4523628.344126029871404 ], [ -11696765.337827799841762, 4523364.794533260166645 ], [ -11696341.591423800215125, 4523168.42424844019115 ], [ -11695788.654042800888419, 4522925.545211959630251 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11696176.22697339951992, 4523080.574384179897606 ], [ -11695995.359605800360441, 4522703.336731770075858 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11696605.141016500070691, 4523245.938834549859166 ], [ -11696475.950039699673653, 4523034.065632509998977 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11696522.458791399374604, 4522961.718685479834676 ], [ -11696491.452956900000572, 4522848.030625849962234 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11696439.776566199958324, 4522972.053963620215654 ], [ -11696403.603092700242996, 4522894.539377519860864 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11700765.09047120064497, 4521762.826420290395617 ], [ -11700486.037961199879646, 4522145.231711770407856 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11700263.829481, 4523080.574384179897606 ], [ -11700341.344067100435495, 4522501.798807879909873 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11699819.412520600482821, 4521561.288496400229633 ], [ -11699814.244881499558687, 4521354.582933439873159 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11700527.379073800519109, 4522336.434357520192862 ], [ -11700517.043795600533485, 4522072.884764740243554 ], [ -11700351.679345300421119, 4521907.520314370281994 ], [ -11700320.673510799184442, 4521912.687953439541161 ], [ -11700263.829481, 4522134.896433630026877 ], [ -11700170.811977699398994, 4522145.231711770407856 ], [ -11700144.973782299086452, 4522098.722960099577904 ], [ -11700144.973782299086452, 4521850.676284549757838 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11699188.960553599521518, 4526108.810881589539349 ], [ -11699070.10485490038991, 4526196.660745849832892 ] ] ] } }, +{ "type": "Feature", "properties": { "id": null, "Formation": null }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [ -11698956.416795300319791, 4526155.319633260369301 ], [ -11698878.902209099382162, 4526026.128656409680843 ] ] ] } } +] +} diff --git a/data/testGPKG_dikemountain.gpkg b/data/testGPKG_dikemountain.gpkg new file mode 100644 index 0000000..643ce7b Binary files /dev/null and b/data/testGPKG_dikemountain.gpkg differ diff --git a/data/testGPKG_dikemountain.gpkg-shm b/data/testGPKG_dikemountain.gpkg-shm new file mode 100644 index 0000000..fe9ac28 Binary files /dev/null and b/data/testGPKG_dikemountain.gpkg-shm differ diff --git a/data/testGPKG_dikemountain.gpkg-wal b/data/testGPKG_dikemountain.gpkg-wal new file mode 100644 index 0000000..e69de29 diff --git a/data/testShapefile_dikemountain.dbf b/data/testShapefile_dikemountain.dbf new file mode 100644 index 0000000..01f015c Binary files /dev/null and b/data/testShapefile_dikemountain.dbf differ diff --git a/data/testShapefile_dikemountain.shp b/data/testShapefile_dikemountain.shp new file mode 100644 index 0000000..3ce203a Binary files /dev/null and b/data/testShapefile_dikemountain.shp differ diff --git a/data/testShapefile_dikemountain.shx b/data/testShapefile_dikemountain.shx new file mode 100644 index 0000000..cc8d45f Binary files /dev/null and b/data/testShapefile_dikemountain.shx differ diff --git a/docs/DemoLinkingLines.ipynb b/docs/DemoLinkingLines.ipynb index 28f82f7..614706d 100644 --- a/docs/DemoLinkingLines.ipynb +++ b/docs/DemoLinkingLines.ipynb @@ -59,11 +59,9 @@ "source": [ "# Load the example dataset \n", "\n", - "#load it using pandas.read_csv\n", + "#load it using built in reading function which also does the preprocessing \n", "# the CSV must have a column called \"WKT\" and can have any other data \n", - "dikeset=ll.readFile('/home/akh/myprojects/Dikes_Linking_Project/dikedata/spanish peaks/SpanishPeaks_3857.csv')\n", - "\n", - "dikeset=ll.preProcess(dikeset)\n" + "dikeset=ll.readFile('/../data/SpanishPeaks_3857.csv', preprocess=True)\n" ] }, { diff --git a/pyproject.toml b/pyproject.toml index 05bc034..66d299c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,11 +25,19 @@ dependencies = [ "scikit_learn>=1.3.0", "scipy>=1.11.2", "seaborn>=0.12.2", - "statsmodels>=0.14.0" + "statsmodels>=0.14.0", + "geopandas>=0.14.3", + "pyproj>=3.6.0", + "notebook>=7.0.4", + "jupyterlab>=4.0.6" ] [project.optional-dependencies] tests = [ - "pytest" + "pytest>=8.0.2", + "Sphinx>=5.3.0", + "nbsphinx>=0.9.3" + + ] diff --git a/requirements.txt b/requirements.txt index 5a5a96a..30a1a05 100644 --- a/requirements.txt +++ b/requirements.txt @@ -33,6 +33,7 @@ greenlet==3.0.3 idna==3.6 imagesize==1.4.1 importlib-metadata==7.0.1 +iniconfig==2.0.0 ipykernel==6.29.3 ipython==8.22.1 isoduration==20.11.0 @@ -82,6 +83,7 @@ patsy==0.5.6 pexpect==4.9.0 pillow==10.2.0 platformdirs==4.2.0 +pluggy==1.4.0 prometheus_client==0.20.0 prompt-toolkit==3.0.43 psutil==5.9.8 @@ -91,6 +93,7 @@ pycparser==2.21 Pygments==2.17.2 pyparsing==3.0.9 pyproj==3.6.0 +pytest==8.0.2 python-dateutil==2.9.0.post0 python-json-logger==2.0.7 pytz==2024.1 diff --git a/src/linkinglines/ClusterLines.py b/src/linkinglines/ClusterLines.py index fb22d7a..550c5ce 100644 --- a/src/linkinglines/ClusterLines.py +++ b/src/linkinglines/ClusterLines.py @@ -12,7 +12,7 @@ import numpy as np import pandas as pd from scipy.cluster.hierarchy import dendrogram -from .HT import rotateData +from .HT import rotateData, HoughTransform #from examineMod import * from .PrePostProcess import whichForm from scipy.spatial.distance import pdist, squareform @@ -50,7 +50,7 @@ def AggCluster(dikeset, dtheta, drho, dimensions=2, linkage='complete', rotate=F # do the Hough transform if 'theta' not in dikeset.columns: print("Hough transform not found, performing Hough transform") - dikeset, xc, yc=HT(dikeset) + dikeset, xc, yc=HoughTransform(dikeset) t,r=whichForm(dikeset) angle=np.median(abs(dikeset[t]))-20 diff --git a/src/linkinglines/ExamineClusters.py b/src/linkinglines/ExamineClusters.py index a3084f1..9faa60a 100644 --- a/src/linkinglines/ExamineClusters.py +++ b/src/linkinglines/ExamineClusters.py @@ -50,7 +50,7 @@ import statsmodels.api as sm from matplotlib.colors import ListedColormap, LinearSegmentedColormap -from .PrePostProcess import completePreProcess, whichForm, midPoint +from .PrePostProcess import preProcess, whichForm, midPoint, transformXstart from sklearn.neighbors import NearestNeighbors import matplotlib.pyplot as plt diff --git a/src/linkinglines/HT.py b/src/linkinglines/HT.py index a894ba6..2001db5 100644 --- a/src/linkinglines/HT.py +++ b/src/linkinglines/HT.py @@ -128,7 +128,7 @@ def HoughTransform(data, xc=None, yc=None): rho=b1*np.sin(angle) theta=np.rad2deg(angle) - newdata= data.copy + newdata= data.copy() newdata['theta']=theta newdata['rho']=rho newdata['xc']=xc @@ -200,13 +200,16 @@ def rotateData(data, rotation_angle): ang=np.deg2rad(rotation_angle) - #xcR, ycR=HT_center(dataRotated) - dataRotated=HoughTransform(dataRotated, xc=xc, yc=yc) + dataRotated = data.copy(deep=True) + dataRotated['Xstart']=x1+xc dataRotated['Ystart']=y1+yc dataRotated['Xend']=x2+xc dataRotated['Yend']=y2+yc + #xcR, ycR=HT_center(dataRotated) + dataRotated, _, _=HoughTransform(dataRotated, xc=xc, yc=yc) + #print(xcR,ycR) @@ -243,7 +246,10 @@ def MidtoPerpDistance(data, xc, yc): # df=midPoint(df) - df=HoughTransform(data, xc, yc) + df, _, _=HoughTransform(data, xc, yc) + rho = df['rho'].values + theta = df['theta'].values + intx=rho*np.cos(np.deg2rad(df['theta'].values)) inty=rho*np.sin(np.deg2rad(df['theta'].values)) df['PerpOffsetDist']=np.sqrt( (df['Xmid'].values-intx)**2 + (df['Ymid'].values-inty)**2)*np.sign((df['Ymid'].values-inty)) diff --git a/src/linkinglines/PrePostProcess.py b/src/linkinglines/PrePostProcess.py index ae2a86a..8eb4259 100644 --- a/src/linkinglines/PrePostProcess.py +++ b/src/linkinglines/PrePostProcess.py @@ -23,7 +23,7 @@ transformXstart: reorders dataframe so that Xstart is always < Xend DikesetReprocess: Reprocesses a dataframe containing dike line data to ensure it has essential attributes and is properly formatted. LinesReprocess: Reprocesses a dataframe containing line data to ensure it has essential attributes and is properly formatted. - CompletePreprocess: Fully preprocesses a dataframe containing line data to ensure it has essential attributes and is properly formatted. + preProcess: Fully preprocesses a dataframe containing line data to ensure it has essential attributes and is properly formatted. whichForm: Returns the form of the dataframe column names MaskArea: Returns dataframe masked by bounds getCartLimits: Computes the Cartesian limits (x and y) of a set of lines. @@ -39,37 +39,44 @@ from scipy import stats import matplotlib.pyplot as plt - +import os import geopandas -def readFile(path): +def readFile(name, preprocess=True): """ Reads in a file and returns a pandas dataframe Parameters: - path: (string) the path to the file to be read in + name: (string) the path to the file to be read in Returns: data: (pandas.DataFrame) a pandas or geopandas dataframe """ # if not a valid path, return error - if not os.path.exists(path): + if not os.path.exists(name): raise ValueError("Invalid path") # if file is not .csv, .txt, or .shp, return error - if path.endswith('.csv') or path.endswith('.txt') or path.endswith('.shp') or path.endswith('.geojson') or path.endswith('.json'): + valid_extensions = ['.csv', '.txt', '.shp', '.geojson', '.json'] + + if not any(name.endswith(ext) for ext in valid_extensions): raise ValueError("Invalid file type") # identify the type of file # read in .csv - if path.endswith('.csv'): - data=pd.read_csv(path) - elif path.endswith('.txt'): - data=pd.read_csv(path, delimiter='\t') + if name.endswith('.csv'): + data=pd.read_csv(name) + elif name.endswith('.txt'): + data=pd.read_csv(name, delimiter='\t') else: - data=geopandas.read_file(path) + data=geopandas.read_file(name) data=data.to_wkt() + + # if preprocess is True, preprocess the data + if preprocess: + data = WKTtoArray(data) + data = preProcess(data) return data @@ -162,6 +169,11 @@ def WKTtoArray(df, plot=False): if len(df) < 1: raise ValueError("DataFrame is empty") + + # # if neither is in columns raise value error + if not ("WKT" in df.columns ): + if not ("geometry" in df.columns): + raise ValueError("No geometry present") xstart=[] ystart=[] @@ -169,20 +181,27 @@ def WKTtoArray(df, plot=False): xend=[] yend=[] drop=[] + if plot: fig,ax=plt.subplots() + + # check for either "WKT" or "geometry" columns + if "geometry" in df.columns: + tag = "geometry" + else: + tag = "WKT" + for i in range(len(df)): - temp=df["WKT"].iloc[i] - temp=re.split(r'[(|)]', temp) + temp=df[tag].iloc[i] t1=temp[0] + # Using regex to find all numbers in the string + temp = re.findall(r"[-+]?\d*\.\d+|\d+", temp) - #print("dike #:",i) - print(temp) - if 'EMPTY' in temp[0]: + + if len(temp)<1: drop.append(i) continue - temp=re.split(r'[,\s]+', temp[2]) - + if "Z" in t1: tempx=np.array(temp[::3]).astype(float) tempy=np.array(temp[1::3]).astype(float) @@ -190,9 +209,13 @@ def WKTtoArray(df, plot=False): tempx=np.array(temp[::2]).astype(float) tempy=np.array(temp[1::2]).astype(float) - print(tempx, tempy) + if np.unique(tempx).shape[0]==1 or np.unique(tempy).shape[0]==1: + drop.append(i) + continue + + slope, intercept, r_value, p_value, std_err = stats.linregress(tempx, tempy) - print(p_value) + #for x,y in zip(tempx, tempy): if any(np.isnan( [slope, intercept])): drop.append(i) @@ -558,10 +581,7 @@ def writeFile(df, name, myProj=None): df: (pandas.DataFrame) the input dataframe """ - # if file is not .csv, .txt, or .shp, return error - if path.endswith('.csv') or path.endswith('.txt') or path.endswith('.shp') or path.endswith('.geojson') or path.endswith('.json'): - raise ValueError("Invalid file type") - + # if ends with .csv or .txt, write as csv if name.endswith('.csv') or name.endswith('.txt'): df = writeToWKT(df, name, myProj=myProj) @@ -574,7 +594,7 @@ def writeFile(df, name, myProj=None): elif name.endswith('.gpkg'): driver = 'GPKG' else: - raise ValueError("Invalid file type") + driver = 'GeoJSON' df = writetoGeoData(df, name, driver, myProj=myProj) diff --git a/src/linkinglines/SyntheticLines.py b/src/linkinglines/SyntheticLines.py index c6eedd8..acfc86f 100644 --- a/src/linkinglines/SyntheticLines.py +++ b/src/linkinglines/SyntheticLines.py @@ -19,9 +19,9 @@ import matplotlib.pyplot as plt from .PlotUtils import plotlines, labelcolors, BA_HT, HThist, DotsLines, labelSubplots from .ExamineClusters import examineClusters +from .PrePostProcess import dikesetReProcess import seaborn as sns from matplotlib import cm -from .PrePostProcess import transformXstart, DikesetReProcess @@ -139,7 +139,7 @@ def addSwarms(dflist): return dfSwarm -def makeLinear2(length, angle, angleSTD, rho, rhoSTD, ndikes=100, CartRange=300000, label=None): +def makeLinearDataFrame(length, angle, angleSTD, rho, rhoSTD, ndikes=100, CartRange=300000, label=None): """ Generate a DataFrame containing linear dike data with angle and rho distributions. @@ -182,49 +182,6 @@ def makeLinear2(length, angle, angleSTD, rho, rhoSTD, ndikes=100, CartRange=3000 return df -def makeLinearDf(length, angle, angleSTD, rho, rhoSTD, ndikes=100, CartRange=300000, label=None): - """ - Generate a DataFrame containing linear dike data with angle and rho distributions. - - Parameters: - length (float): The length of the dike segments. - angle (float): The mean angle of dike orientation (in degrees). - angleSTD (float): The standard deviation of the angle distribution. - rho (float): The mean rho value of dike segments. - rhoSTD (float): The standard deviation of the rho distribution. - ndikes (int): The number of dikes to generate. - CartRange (float): The Cartesian range to filter dikes based on coordinates. - label (int or None): The label to assign to the generated dikes. If None, labels will be assigned automatically. - - Returns: - DataFrame: A DataFrame containing linear dike data. - """ - - angles=np.random.normal(angle, angleSTD, ndikes) - rhos=np.random.normal(rho, rhoSTD, ndikes) - - b=rhos/np.sin(np.deg2rad(angles)) - slopes=-1/(np.tan(np.deg2rad(angles))+0.000000001) - Xstart=np.random.normal(0, rhoSTD, ndikes) - - Ystart=slopes*Xstart+b - a=np.array([1,-1]) - c=np.random.choice(a, ndikes) - Xend=Xstart-length/np.sqrt(1+slopes**2)*c - Yend=slopes*Xend+b - - if type(label) is int: - labels=np.ones(ndikes)*label - else: - labels=np.arange(0,ndikes) - - df=pd.DataFrame({'Xstart':Xstart, 'Xend': Xend, 'Ystart': Ystart, 'Yend':Yend, 'theta':angles, 'rho':rhos, 'Labels':labels}) - - df=df.drop(df[ abs(df['Ystart']) > CartRange].index) - labels=[label]*len(df) - df['Label']=labels - - return df def EnEchelonSynthetic(ndikes, angle, RhoStart, RhoSpacing, Overlap=0, CartRange=100000): """ @@ -316,7 +273,7 @@ def fromHT(angles, rhos, scale=10000, length=10000, xc=0, yc=0, CartRange=100000 df=pd.DataFrame({'Xstart':Xstart, 'Xend': Xend, 'Ystart': Ystart, 'Yend':Yend, 'Label': labels}) - df=DikesetReProcess(df, xc=xc, yc=yc) + df=dikesetReProcess(df, xc=xc, yc=yc) return df diff --git a/test_import.py b/test_import.py deleted file mode 100644 index 60f291a..0000000 --- a/test_import.py +++ /dev/null @@ -1,7 +0,0 @@ -import linkinglines - -import linkinglines.HT - - - -from linkinglines.HT import HoughTransform diff --git a/tests/clustering_test.py b/tests/clustering_test.py index 6bfc666..1750755 100644 --- a/tests/clustering_test.py +++ b/tests/clustering_test.py @@ -9,8 +9,7 @@ import pytest import pandas as pd import numpy as np -from clusterMod import AggCluster -from syntheticMod import fromHT, fragmentDikes +import linkinglines as ll # Create a test class for AggCluster class TestAggCluster: @@ -21,25 +20,24 @@ def synthetic_dikeset(self, autouse=True): # Create synthetic data here theta=np.array([-75, -30, 5, 45, 60, 90]) rho = np.random.uniform(low=-10, high=10, size=6) - synthetic_dikeset = fromHT(theta, rho, scale=1) + synthetic_dikeset = ll.fromHT(theta, rho, scale=1) return synthetic_dikeset # Test cases for AggCluster function without rotation def test_AggCluster_without_rotation(self, synthetic_dikeset): - df= fragmentDikes(synthetic_dikeset) + df = ll.fragmentDikes(synthetic_dikeset) - dikeset, Z = AggCluster(df, dtheta=1.0, drho=1.0, rotate=False) + dikeset, Z = ll.AggCluster(df, dtheta=1.0, drho=1.0, rotate=False) # Add assertions to check the results assert isinstance(dikeset, pd.DataFrame) assert isinstance(Z, np.ndarray) assert len(dikeset) == len(df) - # Add more specific assertions based on your expected behavior # Test cases for AggCluster function with rotation def test_AggCluster_with_rotation(self, synthetic_dikeset): - dikeset, Z = AggCluster(synthetic_dikeset, dtheta=1.0, drho=1.0, rotate=True) + dikeset, Z = ll.AggCluster(synthetic_dikeset, dtheta=1.0, drho=1.0, rotate=True) # Add assertions to check the results after rotation assert isinstance(dikeset, pd.DataFrame) @@ -49,11 +47,11 @@ def test_AggCluster_with_rotation(self, synthetic_dikeset): # Test cases for AggCluster function with custom parameters def test_AggCluster_with_custom_parameters(self, synthetic_dikeset): - dikeset, Z = AggCluster(synthetic_dikeset, dtheta=0.5, drho=0.5) + dikeset, Z = ll.AggCluster(synthetic_dikeset, dtheta=0.5, drho=0.5) # Add assertions to check the results with custom parameters assert isinstance(dikeset, pd.DataFrame) assert isinstance(Z, np.ndarray) assert len(dikeset) == len(synthetic_dikeset) - # Add more specific assertions based on your expected behavior + diff --git a/tests/postProcessing_test.py b/tests/postProcessing_test.py index ee248ee..9a2e1c5 100644 --- a/tests/postProcessing_test.py +++ b/tests/postProcessing_test.py @@ -4,12 +4,9 @@ import pytest import pandas as pd import numpy as np -from fitRectangle import rotateXYShift -from dilationCalculation import dilation -from syntheticMod import makeLinear2, addSwarms, fromHT, addSwarms -from examineMod import RotateOverlap -from PrePostProcess import DikesetReProcess -from fitRadialCenters import RadialFit +from linkinglines import dilation, rotateXYShift, dikesetReProcess, RadialFit +from linkinglines import fromHT, makeLinearDataFrame, RotateOverlap + class TestRotate: @@ -50,18 +47,18 @@ class TestDilation(): #Create some fixtures of linear line dataframes @pytest.fixture(autouse=True) def df2(self): - return makeLinear2(1000, 90, 0, 5000, 500, ndikes=5) + return makeLinearDataFrame(1000, 90, 0, 5000, 500, ndikes=5) @pytest.fixture(autouse=True) def df3(self): - return makeLinear2(1000, 45, 0, 5000, 500, ndikes=5) + return makeLinearDataFrame(1000, 45, 0, 5000, 500, ndikes=5) def test_dilation_90_degrees(self, df2): EWDilation, NSDilation, EWbin, NSbin = dilation(df2, binWidth=1) assert np.isclose(np.sum(np.abs(EWDilation)), 0.0) - assert np.isclose(np.max(NSDilation),4.0) + assert np.isclose(np.max(NSDilation),5.0) assert len(EWDilation)==len(NSbin) assert len(NSDilation)==len(EWbin) @@ -84,7 +81,7 @@ def test_dilation_45_degrees(self, df3): def test_dilation_non_1_average_width(self, df2): EWDilation2, NSDilation2, _, _ = dilation(df2, binWidth=1, averageWidth=10) Value = [np.max(NSDilation2), np.max(EWDilation2)] - Expected = [30, 0] + Expected = [40, 0] assert np.allclose(Value, Expected) @@ -108,7 +105,7 @@ def testfileOverlap(self): } df = pd.DataFrame(data) - df=DikesetReProcess(df, xc=0, yc=0) + df=dikesetReProcess(df, xc=0, yc=0) for i in df['label'].unique(): lines=df[ df['label']==i] diff --git a/tests/preprocessing_test.py b/tests/preprocessing_test.py index 567af97..6e4dde6 100644 --- a/tests/preprocessing_test.py +++ b/tests/preprocessing_test.py @@ -7,14 +7,14 @@ """ # Import necessary modules and libraries -from htMOD import HoughTransform, CyclicAngleDist, rotateData, HT_center -from syntheticMod import fromHT -from PrePostProcess import * -from syntheticMod import * +from linkinglines import HoughTransform, CyclicAngleDist, rotateData, HT_center +from linkinglines import fromHT, fragmentDikes, WKTtoArray, readFile, writeFile + import pytest import pandas as pd +import geopandas as gpd import numpy as np - +import os class TestHTCenter: # Test case 1: Test with a DataFrame containing horizontal line segments @@ -64,23 +64,23 @@ def test_diagonal_line_segments(self): class TestHough: # Test case for an empty DataFrame input to HoughTransform function @staticmethod - def test_emptyDataFrame_akhht(): + def test_emptyDataFrame_ht(): # Create an empty DataFrame with the required columns empty_df = pd.DataFrame(columns=['Xstart', 'Ystart', 'Xend', 'Yend']) # Call the HoughTransform function with the empty DataFrame with pytest.raises(ValueError): - theta, rho, xc, yc = HoughTransform(empty_df) + df, xc, yc = HoughTransform(empty_df) # Test case for a non-DataFrame input to HoughTransform function @staticmethod - def test_notDataFrame_akhht(): + def test_notDataFrame_ht(): # Create an array (non-DataFrame) array = np.linspace(0, 100) # Call the HoughTransform function with the non-DataFrame input with pytest.raises(ValueError): - theta, rho, xc, yc = HoughTransform(array) + df, xc, yc = HoughTransform(array) # Test case for points not lines @staticmethod @@ -94,7 +94,7 @@ def test_points_ht(): # Call the HoughTransform function with the points input with pytest.raises(ValueError): - theta, rho, xc, yc = HoughTransform(data) + data, xc, yc = HoughTransform(data) # Test case for HoughTransform with specified center coordinates @staticmethod @@ -111,7 +111,7 @@ def test_akht_with_center(): xc, yc = 1.5, 1.5 # Calculate the Hough Transform - theta, rho, result_xc, result_yc = HoughTransform(data, xc=xc, yc=yc) + df, result_xc, result_yc = HoughTransform(data, xc=xc, yc=yc) # Perform assertions assert result_xc == xc @@ -120,9 +120,11 @@ def test_akht_with_center(): # Check calculated theta and rho values theta_true = np.array([-45., -45., -45., -45.]) rho_true = np.array([0, 0, 0, 0]) - assert len(theta) == len(data) + + theta = df['theta'].values + rho = df['rho'].values + assert len(df)==len(data) assert all([np.isclose(a, b) for a, b in zip(theta, theta_true)]) - assert len(rho) == len(data) assert all([np.isclose(a, b) for a, b in zip(rho, rho_true)]) # Test case for HoughTransform without specifying center coordinates @@ -137,16 +139,16 @@ def test_akht_without_center(): }) # Calculate the Hough Transform without specifying center - theta, rho, xc, yc = HoughTransform(data) + df, xc, yc = HoughTransform(data) # Perform assertions - assert isinstance(theta, np.ndarray) - assert isinstance(rho, np.ndarray) + theta = df['theta'].values + rho = df['rho'].values theta_true = np.array([-45., -45., -45., -45.]) rho_true = np.array([0, 0, 0, 0]) - assert len(theta) == len(data) + + assert len(data)==len(df) assert all([np.isclose(a, b) for a, b in zip(theta, theta_true)]) - assert len(rho) == len(data) assert all([np.isclose(a, b) for a, b in zip(rho, rho_true)]) assert xc == 1.5 assert yc == 1.5 @@ -165,11 +167,11 @@ def test_akht_vertical(): }) # Calculate the Hough Transform with specified center (0, 0) - theta, rho, xc, yc = HoughTransform(data, xc=0, yc=0) + df, xc, yc = HoughTransform(data, xc=0, yc=0) # Perform assertions - assert isinstance(theta, np.ndarray) - assert isinstance(rho, np.ndarray) + theta = df['theta'].values + rho = df['rho'].values theta_true = np.array([0., 0., 0., 0.]) rho_true = np.array([0, 1, 2, 3]) assert all([np.isclose(a, b) for a, b in zip(theta, theta_true)]) @@ -189,11 +191,12 @@ def test_akht_horizontal(): }) # Calculate the Hough Transform with specified center (0, 0) - theta, rho, xc, yc = HoughTransform(data, xc=0, yc=0) + df, xc, yc = HoughTransform(data, xc=0, yc=0) # Perform assertions - assert isinstance(theta, np.ndarray) - assert isinstance(rho, np.ndarray) + + theta = df['theta'].values + rho = df['rho'].values theta_true = np.array([90., 90., 90., 90.]) rho_true = np.array([0, 1, 2, 3]) assert all([np.isclose(a, b) for a, b in zip(theta, theta_true)]) @@ -307,7 +310,7 @@ def test_valid_wkt_strings(self): 'WKT': ['LINESTRING ((0 0, 1 1))', 'LINESTRING ((1 1, 2 2))', 'LINESTRING ((2 2, 3 3))'] }) - result_df = WKTtoArray(data, plot=False) + result_df = WKTtoArray(data) assert isinstance(result_df, pd.DataFrame) # Assert that the resulting DataFrame has the expected columns assert 'Xstart' in result_df.columns @@ -339,8 +342,11 @@ def test_invalid_wkt_strings(self): 'WKT': ['INVALID_WKT_STRING', 'LINESTRING ((0 0, 1 1))', 'EMPTY', 'LINESTRING ((1 1, 2 2))'] }) - with pytest.raises(IndexError): - result_df = WKTtoArray(data, plot=False) + result_df = WKTtoArray(data, plot=False) + + assert len(result_df)==2 + assert result_df['Xstart'].iloc[0] == 0 + assert result_df['Yend'].iloc[1] == 2 def test_nonlinear_segments(self): # Create a sample DataFrame with valid WKT strings @@ -348,7 +354,7 @@ def test_nonlinear_segments(self): 'WKT': ['LINESTRING ((0 0, 50 50, 10,-20))', 'LINESTRING ((1 1, 2 2))', 'LINESTRING ((2 2, 3 3))'] }) - result_df = WKTtoArray(data, plot=True) + result_df = WKTtoArray(data) # Assert that the resulting DataFrame has the expected columns assert 'Xstart' in result_df.columns @@ -357,8 +363,79 @@ def test_nonlinear_segments(self): assert 'Yend' in result_df.columns assert 'seg_length' in result_df.columns + print(result_df) + #Assert dataframe has expected length assert len(data)-1==len(result_df) - \ No newline at end of file +class TestReadFile(): + # Test case 1: read csv with wkt + def testCSVRead(self): + df=readFile('../data/testCSV_dikemountain.csv') + assert isinstance(df, pd.DataFrame) + columns= ['WKT', 'seg_length', 'Xstart', 'Ystart', 'Xend', 'Yend', 'theta', 'rho'] + assert all([a in df.columns for a in columns]) + + # Test case 2: read geojson + def testGeoJSONRead(self): + df=readFile('../data/testGJSON_dikemountain.geojson') + assert isinstance(df, pd.DataFrame) + columns= ['geometry','seg_length', 'Xstart', 'Ystart', 'Xend', 'Yend', 'theta', 'rho'] + assert all([a in df.columns for a in columns]) + + # Test case 3: read shapefile + def testShapefileRead(self): + df=readFile('../data/testShapefile_dikemountain.shp') + assert isinstance(df, pd.DataFrame) + columns= ['geometry', 'seg_length', 'Xstart', 'Ystart', 'Xend', 'Yend', 'theta', 'rho'] + assert all([a in df.columns for a in columns]) + + def testInvalidFile(self): + with pytest.raises(ValueError): + df=readFile('invalid_file.jpg') + +class TestWriteFile(): + + @pytest.fixture + def df(self, autouse=True): + # Create synthetic data here + theta=np.array([-75, -30, 5, 45, 60, 90]) + rho = np.random.uniform(low=-10, high=10, size=6) + df = fromHT(theta, rho, scale=1) + return df + + # Test case 1: write to csv + def testFileTypesWrite(self, df): + + for i in [".csv", ".shp", ".gpkg", ".geojson"]: + + testpath = '../data/test' + + dfwrite=writeFile(df, testpath+i) + + # File exists + assert os.path.exists( testpath+i) + + # Files is not empty + assert os.path.getsize( testpath+i) > 0 + + # File has expected columns + df2 = gpd.read_file(testpath+i) + columns = ['seg_length', 'Xstart', 'Ystart', 'Xend', 'Yend', 'theta', 'rho'] + + assert all([a in df2.columns for a in columns]) + + def testWriteWKT(self,df): + + # write as geojson + dfwrite = writeFile(df, '../data/testWKTwrite.geojson') + + df2 = gpd.read_file('../data/testWKTwrite.geojson') + + assert "WKT" in df2.columns or "geometry" in df2.columns + + + + + diff --git a/tests/testClustering.py b/tests/testClustering.py index 77e293d..f8d1bad 100644 --- a/tests/testClustering.py +++ b/tests/testClustering.py @@ -6,6 +6,11 @@ # @author: akh # """ +import numpy as np +import pandas as pd +import linkinglines as ll +import pytest + def testValidity(lines, dtheta, drho): if any(lines['ThetaRange'] > dtheta): @@ -18,446 +23,60 @@ def testValidity(lines, dtheta, drho): else: print("Passed Theta Validity Check 1") -def Run3Times(dikeset, dtheta, drho, plot=False, **kwargs): - xc1,yc1=HT_center(dikeset) +def Run3Times(dikeset, dtheta, drho, **kwargs): + xc1,yc1=ll.HT_center(dikeset) # run the first time - dikeset, Z1=HT_AGG_custom(dikeset, dtheta, drho, **kwargs) - lines1, IC1=examineClusters(dikeset) + dikeset, Z1=ll.AggCluster(dikeset, dtheta, drho, **kwargs) + lines1, IC1=ll.examineClusters(dikeset) # rotate 45 deg - dikeset2=rotateData2(dikeset, 45) - theta2, rho2, xc2, yc2=AKH_HT(dikeset2) - dikeset2['theta']=theta2 - dikeset2['rho']=rho2 - dikeset2, Z2=HT_AGG_custom(dikeset2, dtheta, drho, **kwargs) - dikeset2=rotateData2(dikeset2,-45) - lines2, IC2=examineClusters(dikeset2) + dikeset2=ll.rotateData(dikeset, 45) + dikeset2, xc2, yc2=ll.HT(dikeset2) + dikeset2, Z2=ll.AggCluster(dikeset2, dtheta, drho, **kwargs) + dikeset2=ll.rotateData(dikeset2,-45) + lines2, __=ll.examineClusters(dikeset2) #move to lower left dx=np.min([dikeset['Xstart'].min(), dikeset['Xend'].min()]) dy=np.min([dikeset['Ystart'].min(), dikeset['Yend'].min()]) - theta3, rho3, xc3, yc3=AKH_HT(dikeset, xc=dx,yc=dy) - dikeset3=dikeset.copy() - dikeset3['theta']=theta3 - dikeset3['rho']=rho3 - - dikeset3, Z3=HT_AGG_custom(dikeset3, dtheta, drho, **kwargs) + dikeset3, xc3, yc3=ll.HT(dikeset, xc=dx,yc=dy) + + dikeset3, Z3=ll.AggCluster(dikeset3, dtheta, drho, **kwargs) - lines3, IC3=examineClusters(dikeset3) + lines3, IC3=ll.examineClusters(dikeset3) #check the changes - eq12, diff12=checkClusterChange(lines1, lines2) - eq13, diff13=checkClusterChange(lines1, lines3) - eq32, diff32=checkClusterChange(lines3, lines2) + eq12, diff12=ll.checkClusterChange(lines1, lines2) + eq13, diff13=ll.checkClusterChange(lines1, lines3) + eq32, diff32=ll.checkClusterChange(lines3, lines2) - Flines1=FilterLines(lines1) - Flines2=FilterLines(lines2) - Flines3=FilterLines(lines3) + Flines1=ll.FilterLines(lines1) + Flines2=ll.FilterLines(lines2) + Flines3=ll.FilterLines(lines3) print("Comparing the filtered lines") - eq12, diff12=checkClusterChange(Flines1, Flines2) - eq13, diff13=checkClusterChange(Flines1, Flines3) - eq32, diff32=checkClusterChange(Flines3, Flines2) + eq12, diff12=ll.checkClusterChange(Flines1, Flines2) + eq13, diff13=ll.checkClusterChange(Flines1, Flines3) + eq32, diff32=ll.checkClusterChange(Flines3, Flines2) - if plot: - - fig,ax=plt.subplots(1,2) - plotlines(lines1, 'k', ax[0]) - plotlines(lines2, 'b', ax[0]) - plotlines(lines3, 'r', ax[0]) - - ax[1].scatter(dikeset['theta'], dikeset['rho'], c=dikeset['Labels'].values, alpha=0.6, cmap=cm.Greys, marker='p') - ax[1].scatter(dikeset2['theta'], dikeset2['rho'], c=dikeset2['Labels'].values, alpha=0.6, cmap=cm.Blues, marker='*') - ax[1].scatter(dikeset3['theta'], dikeset3['rho'], c=dikeset3['Labels'].values, alpha=0.6, cmap=cm.Reds, marker='^') - - fig,ax=plt.subplots(3,2) - - plotlines(lines1.iloc[diff12], 'k', ax[0,0]) - plotlines(lines2.iloc[diff12], 'b', ax[0,1]) - - plotlines(lines1.iloc[diff13], 'k', ax[1,0]) - plotlines(lines3.iloc[diff13], 'r', ax[1,1]) - - plotlines(lines2.iloc[diff32[diff32 dtheta): -# print(ind, "Test 4.2 Failed") - - - -# # little correlation between types of error -# #ax[0].plot(perror, terror, 'r*') -# #ax[1].plot(lerror, terror, 'r*') -# #ax[2].plot(lerror, perror, 'r*') - -# print("Mean length:", lines['R_Length'].mean(), "Max:",lines['R_Length'].max()) -# if lines['R_Length'].max() > TrueLength: -# print('Test 4.3 Max length greater than true length') -# print('Failed') -# else: -# print('Test 4.3 Max length greater than true length') -# print("Passed") - -# test5=False -# if test5: -# print('entering test 5 ') -# spacing=[200, 500, 1000, 5000] -# drhos=[200,350, 500,1000, 2000, 5000, 6000, 7000] -# cs=[] -# cs2=[] -# cs3=[] -# T=[] -# ndikes=10 -# for i in spacing: -# df=standardSpacing(ndikes, 45, 10000, i) -# df=completePreProcess(df) -# dikes = fragmentDikes(df) -# theta, rho, xc, yc= HT(dikes, xc=0, yc=0) -# dikes['theta']=theta -# dikes['rho']=rho -# dikes= MidtoPerpDistance(dikes, xc, yc) -# midist=dikes['PerpOffsetDist'].values -# dtheta=1 -# for drho in drhos: - - -# dikes,clusters, M=HT_AGG_custom(dikes, dtheta, drho, linkage='single') -# lines,IC=examineClusters(dikes) -# #print ("for true spacing", i, "and clustering threshold", drho) -# #print( len(lines), "clusters idenitified of ", len(df), "true dikes") -# cs.append(len(lines)) - - -# dikes,clusters, M=HT_AGG_custom(dikes, dtheta, drho, linkage='complete') -# lines,IC=examineClusters(dikes) -# #print ("for true spacing", i, "and clustering threshold", drho) -# #print( len(lines), "clusters idenitified of ", len(df), "true dikes") -# cs2.append(len(lines)) - - -# dikes,clusters, M=HT_AGG_custom(dikes, dtheta, drho, linkage='average') -# lines,IC=examineClusters(dikes) -# #print ("for true spacing", i, "and clustering threshold", drho) -# #print( len(lines), "clusters idenitified of ", len(df), "true dikes") -# cs3.append(len(lines)) - -# T.append(drho/i) - - -# x=np.array(T) - - -# cs=np.array(cs) -# cs2=np.array(cs2) -# cs3=np.array(cs3) - -# f,ax=plt.subplots() -# ax.plot(x, cs, "rs", label='Single Linkage', markersize=7, alpha=0.7, markeredgecolor="r" ) -# ax.plot(x, cs2, "bp", label='Complete Linkage', markersize=7, alpha=0.7, markeredgecolor="b") -# ax.plot(x,cs3, "g*", label='Average Linkage', markersize=7, alpha=0.7, markeredgecolor="g") - -# #fit exponential curve to cs data using scipy curve_fit -# import scipy.optimize as opt - -# def expFit(x,y): - - -# def exp(x,a,b,c): -# return a*np.exp(b*-1*x)+c - -# popt, pcov = opt.curve_fit(exp, x,y) - -# #calculate the r^2 value -# residuals = np.sum(np.square(y - exp(x, *popt))) -# squaredDiff = np.sum(np.square(y - np.mean(y))) -# r2 = 1 - (residuals / squaredDiff) -# x2=np.linspace(min(x), max(x), 100) -# y2=exp(x2, *popt) - - -# return popt, pcov, r2, x2, y2 - -# popt3, pcov3, r2_3, x2, y2_3=expFit(x, cs3) -# popt2, pcov2, r2_2, x2, y2_2=expFit(x, cs2) -# popt1, pcov1, r2, x2, y2=expFit(x, cs) - -# ax.plot(x2, y2, "r") -# ax.plot(x2, y2_2, "b") -# ax.plot(x2, y2_3, "g") - -# ax.legend(loc='upper right') -# ax.set_ylabel('Number of Dikes') -# ax.set_xlabel('RhoThreshold/TrueSpacing') - -# from examineMod import enEchelon -# test7=False -# if test7: -# print('entering test 7') - -# AvgTheta=80 -# df=EnEchelonSynthetic(5, AvgTheta, 10000, 200) -# df=completePreProcess(df) -# dikes = fragmentDikes(df) -# theta, rho, xc, yc= HT(dikes, xc=0, yc=0) -# dikes['theta']=theta -# dikes['rho']=rho -# dikes= MidtoPerpDistance(dikes, xc, yc) -# midist=dikes['PerpOffsetDist'].values -# df['Label']=np.ones(len(df)) -# Xmid=df['Xmid'].to_numpy() -# Ymid=df['Ymid'].to_numpy() - -# slope, intercept, r_value, p_value, std_err = stats.linregress(Xmid, Ymid) -# thetaM=np.rad2deg(np.arctan(-1/(slope+ 0.0000000000000001))) -# if np.isnan(slope): -# thetaM=0 -# p_value=0.05 - - -# tdiff=CyclicAngleDist([AvgTheta], [thetaM]) -# print(tdiff, thetaM, p_value) -# #if p_value > 0.05: -# # tdff=np.nan - -# #tdiff=enEchelon(df,45) -# print(tdiff) - -# tdiff2, EXstart, EXend, EYstart, EYend=enEchelon(df, AvgTheta) - -# fig,ax=plt.subplots() -# plotlines(df, 'k', ax) -# ax.plot(Xmid, Ymid, 'r*-') -# ax.axis('equal') -# ax.plot([EXstart, EXend], [EYstart, EYend]) - - -# print ("Test 8 ") - -# print("Are sklearn and scipy the same?") - -# from clusterMod import HT_AGG_custom as AggHT -# from clusterMod import HT_AGG_custom2 -# drho=572 -# dtheta=2 - -# test1, clusters, M=AggHT(testData, dtheta, drho) - -# test2, Z=HT_AGG_custom2(testData, dtheta, drho) - -# print("Sklearn", test1['Labels']) -# print("Scipy", test2['Labels']) - -# from examineMod import checkClusterChange - -# print(checkClusterChange(test1, test2)) -