{"cells":[{"cell_type":"markdown","metadata":{"id":"TqA3JVgDronY"},"source":["# Testowy Notebook\n","\n","To jest colab, czyli współdzielony notatnik pythonowy od Google. Integruje się z kontem, dyskiem i na dysku można przechowywać pliki, oraz wspólnie na nich pracować (tak jak w przypadku dokumentów czy arkuszy). \n","\n","## O notatniku\n","\n","Notatnik pythona to profesjonalne narzędzie badawcze, które jest z powodzeniem używane przez nauowców na świecie. Pozwala ono nie tylko wyknywać kod Pythona ale także publikować rezultaty działań (np modelowań). MOim pomysłem jest użycie go jako alternatywy dla instalowania Anakondy na komputerze z Windowsem.\n","\n","\n","\n","### Możlwy zakres użycia:\n","* Opisywanie kodu modelowań \n","* Praca ze studentami \n","* Dziele się rozwiązaniami\n","* ?\n","\n","### Ograniczenia\n","Ograniczeniem jest niewątpliwie moc wirtulnej maszyny, która jest tworzona na porzeby sesji notebooka i zasadniczo pochodzi z tego czego nie używa aktualnie google. dodatkowo sama maszyna jest po pewny czasie usuwana wraz z przesłanymi/utworzonymi plikami. Niemniej praca wewnątrz notatnika, jak i wyniki tu pozostają."]},{"cell_type":"markdown","metadata":{"id":"aEQ2XDj1cEPE"},"source":["# Sekcja testowa Pythona\n","Pisz sobie tu kod"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":20,"status":"ok","timestamp":1643401317994,"user":{"displayName":"Maciej Kamiński","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj2vhTHjEiP4jOb6hFfLUXrg8dqjf3gDN-nLRzo=s64","userId":"07247755832390420439"},"user_tz":-60},"id":"R5eFnfaaebDV","outputId":"72496cb6-531d-491b-f6fc-887dd9577f45"},"outputs":[{"name":"stdout","output_type":"stream","text":["unzip: cannot find or open siec_drog_istn4.zip, siec_drog_istn4.zip.zip or siec_drog_istn4.zip.ZIP.\n"]}],"source":["### konsolowa komenda do rozpakowywania plików zip\n","!unzip siec_drog_istn4.zip -d rozpakowane\n"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"uU9rgGy5wvnM"},"outputs":[],"source":["a=\"kot\""]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":14,"status":"ok","timestamp":1643401317995,"user":{"displayName":"Maciej Kamiński","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj2vhTHjEiP4jOb6hFfLUXrg8dqjf3gDN-nLRzo=s64","userId":"07247755832390420439"},"user_tz":-60},"id":"DtmRFZ7aV-3v","outputId":"a0bc08ba-6e03-4349-b116-2d41352bfd27"},"outputs":[{"name":"stdout","output_type":"stream","text":["kot\n"]}],"source":["print(a)"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"XWExKlGy4WMM"},"outputs":[],"source":["def hello(name):\n"," print(\"Hello {0}! How are you?\".format(name)) "]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":14,"status":"ok","timestamp":1643401317998,"user":{"displayName":"Maciej Kamiński","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj2vhTHjEiP4jOb6hFfLUXrg8dqjf3gDN-nLRzo=s64","userId":"07247755832390420439"},"user_tz":-60},"id":"W5_6bxuK5FZx","outputId":"398651d9-b6d0-482d-b107-9ba6053d3216"},"outputs":[{"name":"stdout","output_type":"stream","text":["Hello Maciek! How are you?\n"]}],"source":["hello('Maciek')"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":15,"status":"ok","timestamp":1643401318000,"user":{"displayName":"Maciej Kamiński","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gj2vhTHjEiP4jOb6hFfLUXrg8dqjf3gDN-nLRzo=s64","userId":"07247755832390420439"},"user_tz":-60},"id":"MBTmJzQ05IaV","outputId":"0ba2cc48-b034-4316-90c7-67b50cc304eb"},"outputs":[{"name":"stdout","output_type":"stream","text":["Policzyłem ciasteczka mam: 10 Zjem tylko jedno!\n","Policzyłem ciasteczka mam: 9 Zjem tylko jedno!\n","Policzyłem ciasteczka mam: 8 Zjem tylko jedno!\n","Policzyłem ciasteczka mam: 7 Zjem tylko jedno!\n","Policzyłem ciasteczka mam: 6 Zjem tylko jedno!\n","Policzyłem ciasteczka mam: 5 Zjem tylko jedno!\n","Policzyłem ciasteczka mam: 4 Zjem tylko jedno!\n","Policzyłem ciasteczka mam: 3 Zjem tylko jedno!\n","Policzyłem ciasteczka mam: 2 Zjem tylko jedno!\n","Policzyłem ciasteczka mam: 1 Zjem tylko jedno!\n","Nie mam ciastek :(\n"]}],"source":["for i in reversed(range(10)):\n"," print(\"Policzyłem ciasteczka mam: \",i+1,\" Zjem tylko jedno!\") \n","print(\"Nie mam ciastek :(\")\n"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"gtRbeXpF_BGt"},"outputs":[],"source":[]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":30278,"status":"ok","timestamp":1646726105507,"user":{"displayName":"Magdalena Mlek-Galewska","photoUrl":"https://lh3.googleusercontent.com/a/default-user=s64","userId":"12492964398364614235"},"user_tz":-60},"id":"DQTMtsZr9NKG","outputId":"d3395f2f-222f-445b-d9a2-871428cc074f"},"outputs":[{"name":"stdout","output_type":"stream","text":["Mounted at /content/drive\n"]}],"source":["from google.colab import drive\n","drive.mount('/content/drive')\n"]},{"cell_type":"markdown","metadata":{"id":"ZvM60Fm3OVga"},"source":["# Pobieranie kodu Pankus\n","*instalacja*"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"N78ydYBfcLZ9","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1681770353428,"user_tz":-120,"elapsed":14709,"user":{"displayName":"Jerzy Sławski","userId":"08084949085648484321"}},"outputId":"614c8709-050f-45cc-cc3c-0d29c55ba91c"},"outputs":[{"output_type":"stream","name":"stdout","text":["rm: cannot remove 'pankus_package': No such file or directory\n","rm: cannot remove 'pankus': No such file or directory\n","Cloning into 'pankus_package'...\n","remote: Enumerating objects: 1689, done.\u001b[K\n","remote: Counting objects: 100% (531/531), done.\u001b[K\n","remote: Compressing objects: 100% (217/217), done.\u001b[K\n","remote: Total 1689 (delta 323), reused 498 (delta 304), pack-reused 1158\u001b[K\n","Receiving objects: 100% (1689/1689), 960.81 KiB | 5.37 MiB/s, done.\n","Resolving deltas: 100% (1011/1011), done.\n","Branch 'development' set up to track remote branch 'development' from 'origin'.\n","Switched to a new branch 'development'\n","Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n","Collecting vincenty\n"," Downloading vincenty-0.1.4.tar.gz (2.8 kB)\n"," Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n","Building wheels for collected packages: vincenty\n"," Building wheel for vincenty (setup.py) ... \u001b[?25l\u001b[?25hdone\n"," Created wheel for vincenty: filename=vincenty-0.1.4-py3-none-any.whl size=3080 sha256=1d5f5e2d8c2138604f51fc8c87cbd0f084eea76d4ccdc52813fa7dd44f80b10b\n"," Stored in directory: /root/.cache/pip/wheels/c1/db/cc/a3f68cf973a6fe47d8bf2c389a0c4943b7e7386ae9f6d829b7\n","Successfully built vincenty\n","Installing collected packages: vincenty\n","Successfully installed vincenty-0.1.4\n"]}],"source":["#Usunięcie starego katalogu\n","!rm -r pankus_package\n","!rm -r pankus\n","\n","#Sklonowanie repozytorium do katalogu `pankus_package`\n","!git clone https://github.com/gospodarka-przestrzenna/pankus.git pankus_package\n","\n","#\n","#* Wejście do katalogu `pankus_package`;\n","#* wybranie (`checkout`) gałęzi `zima_22_23`\n","#* skopiowanie katalogu `pankus` na ten sam poziom gdzie obecnie jest `pankus_package` stamtąd będziemy używać tego \n","#Te trzy komendy musimy dać w jednj komórce, Colab nie zachowuje zmian katalogu pomiędzy komórkami\n","#W idealnym świecie zrobiliyśmy\n","#`pip install pankus` \n","# w konsoli. Niestety obecna wersja jest rozwojową nie znajduje się jeszcze w oficjalnych repozytoriach\n","#\n","#Wchodzimy do katalogu i używany gałęzi 'zima_22_23' przenosimy podkatalog pankus wyżej dla użytku\n","!cd pankus_package; git checkout development; cp -r pankus ../pankus\n","\n","\n","#doinstalowanie pakiety który normalnie zostałby zainstalowany razem z pakietem pankus \n","!pip install vincenty"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"xYhyYpBngx2X","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1681770397230,"user_tz":-120,"elapsed":33505,"user":{"displayName":"Jerzy Sławski","userId":"08084949085648484321"}},"outputId":"1ff1ebe7-8d4e-4a2d-f927-7cd1d4a2fef8"},"outputs":[{"output_type":"stream","name":"stdout","text":["Mounted at /content/drive\n"]}],"source":["from google.colab import drive\n","drive.mount('/content/drive')"]},{"cell_type":"markdown","metadata":{"id":"GVkjzUMDOkNx"},"source":["# Modelowania"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"f03lVGQrFjmu","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1681770753846,"user_tz":-120,"elapsed":1344,"user":{"displayName":"Jerzy Sławski","userId":"08084949085648484321"}},"outputId":"6cda6499-c478-451b-e629-20e02dc712f9"},"outputs":[{"output_type":"stream","name":"stderr","text":[" [Elapsed Time: 0:00:00] |##################################| (Time: 0:00:00) \n"," [Elapsed Time: 0:00:00] |##################################| (Time: 0:00:00) \n"]},{"output_type":"stream","name":"stdout","text":["problem with geometry at: [330158.20067, 368301.55731]\n","problem with geometry at: [330658.15444, 368294.75822]\n","problem with geometry at: [331158.10821, 368287.95912]\n","problem with geometry at: [331658.06198, 368281.16002]\n","problem with geometry at: [332158.01575, 368274.36093]\n","problem with geometry at: [332657.96952, 368267.56183]\n","problem with geometry at: [333157.92329, 368260.76273]\n","problem with geometry at: [333657.87706, 368253.96364]\n","problem with geometry at: [334157.83083, 368247.16454]\n","problem with geometry at: [334657.7846, 368240.36544]\n","problem with geometry at: [335157.73837, 368233.56634]\n","problem with geometry at: [335657.69214, 368226.76725]\n","problem with geometry at: [336157.64591, 368219.96815]\n","problem with geometry at: [336657.59968, 368213.16905]\n","problem with geometry at: [337157.55345, 368206.36996]\n","problem with geometry at: [337657.50722, 368199.57086]\n","problem with geometry at: [338157.46099, 368192.77176]\n","problem with geometry at: [338657.41477, 368185.97267]\n","problem with geometry at: [339157.36854, 368179.17357]\n","problem with geometry at: [339657.32231, 368172.37447]\n","problem with geometry at: [340157.27608, 368165.57538]\n","problem with geometry at: [340657.22985, 368158.77628]\n","problem with geometry at: [341157.18362, 368151.97718]\n","problem with geometry at: [341657.13739, 368145.17809]\n","problem with geometry at: [342157.09116, 368138.37899]\n","problem with geometry at: [342657.04493, 368131.57989]\n","problem with geometry at: [343156.9987, 368124.7808]\n","problem with geometry at: [343656.95247, 368117.9817]\n","problem with geometry at: [344156.90624, 368111.1826]\n","problem with geometry at: [344656.86001, 368104.38351]\n","problem with geometry at: [345156.81378, 368097.58441]\n","problem with geometry at: [345656.76755, 368090.78531]\n","problem with geometry at: [346156.72132, 368083.98622]\n","problem with geometry at: [346656.67509, 368077.18712]\n","problem with geometry at: [347156.62886, 368070.38802]\n","problem with geometry at: [347656.58263, 368063.58892]\n","problem with geometry at: [348156.5364, 368056.78983]\n","problem with geometry at: [348656.49017, 368049.99073]\n","problem with geometry at: [349156.44394, 368043.19163]\n","problem with geometry at: [349656.39771, 368036.39254]\n","problem with geometry at: [350156.35148, 368029.59344]\n","problem with geometry at: [350656.30525, 368022.79434]\n","problem with geometry at: [351156.25902, 368015.99525]\n","problem with geometry at: [351656.21279, 368009.19615]\n","problem with geometry at: [352156.16656, 368002.39705]\n","problem with geometry at: [352656.12033, 367995.59796]\n","problem with geometry at: [353156.0741, 367988.79886]\n","problem with geometry at: [353656.02787, 367981.99976]\n","problem with geometry at: [354155.98164, 367975.20067]\n","problem with geometry at: [354655.93541, 367968.40157]\n","problem with geometry at: [355155.88918, 367961.60247]\n","problem with geometry at: [355655.84295, 367954.80338]\n","problem with geometry at: [356155.79672, 367948.00428]\n","problem with geometry at: [356655.75049, 367941.20518]\n","problem with geometry at: [357155.70426, 367934.40609]\n","problem with geometry at: [357655.65803, 367927.60699]\n","problem with geometry at: [358155.6118, 367920.80789]\n","problem with geometry at: [358655.56557, 367914.00879]\n","problem with geometry at: [359155.51934, 367907.2097]\n","problem with geometry at: [359655.47311, 367900.4106]\n","problem with geometry at: [360155.42688, 367893.6115]\n","problem with geometry at: [360655.38065, 367886.81241]\n","problem with geometry at: [361155.33442, 367880.01331]\n","problem with geometry at: [361655.28819, 367873.21421]\n","problem with geometry at: [362155.24196, 367866.41512]\n","problem with geometry at: [362655.19573, 367859.61602]\n","problem with geometry at: [363155.1495, 367852.81692]\n","problem with geometry at: [363655.10327, 367846.01783]\n","problem with geometry at: [364155.05704, 367839.21873]\n","problem with geometry at: [364655.01081, 367832.41963]\n","problem with geometry at: [365154.96458, 367825.62054]\n","problem with geometry at: [365654.91835, 367818.82144]\n","problem with geometry at: [366154.87212, 367812.02234]\n","problem with geometry at: [366654.82589, 367805.22325]\n","problem with geometry at: [367154.77966, 367798.42415]\n","problem with geometry at: [367654.73343, 367791.62505]\n","problem with geometry at: [368154.6872, 367784.82596]\n","problem with geometry at: [368654.64097, 367778.02686]\n","problem with geometry at: [369154.59474, 367771.22776]\n","problem with geometry at: [369654.54851, 367764.42866]\n","problem with geometry at: [370154.50228, 367757.62957]\n","problem with geometry at: [370654.45605, 367750.83047]\n","problem with geometry at: [371154.40982, 367744.03137]\n","problem with geometry at: [371654.36359, 367737.23228]\n","problem with geometry at: [372154.31736, 367730.43318]\n","problem with geometry at: [372654.27113, 367723.63408]\n","problem with geometry at: [373154.22491, 367716.83499]\n","problem with geometry at: [373654.17868, 367710.03589]\n","problem with geometry at: [374154.13245, 367703.23679]\n","problem with geometry at: [374654.08622, 367696.4377]\n","problem with geometry at: [375154.03999, 367689.6386]\n","problem with geometry at: [375653.99376, 367682.8395]\n","problem with geometry at: [376153.94753, 367676.04041]\n","problem with geometry at: [376653.9013, 367669.24131]\n","problem with geometry at: [377153.85507, 367662.44221]\n","problem with geometry at: [377653.80884, 367655.64312]\n","problem with geometry at: [378153.76261, 367648.84402]\n","problem with geometry at: [378653.71638, 367642.04492]\n","problem with geometry at: [379153.67015, 367635.24583]\n","problem with geometry at: [379653.62392, 367628.44673]\n","problem with geometry at: [380131.86339, 367621.94293]\n","No points problems\n"]}],"source":["# SPRAWDZANIE / ANALZA GEOMETRII\n","from pankus.taurus import Taurus \n","#Od tej pory możemy tworzyć obiekty Taurus\n","\n","\n","# utworzenie obiektu\n","T=Taurus(database_name=\":memory:\") \n","### podaj nazwę pola - unikalny numer węzłów generujących (od_id_name), oraz podaj nazwę pliku z węzłami generującymi (od_filename)\n","T.import_od_geojson(od_id_name=\"ID\", od_filename=\"/content/drive/MyDrive/WPD_LIN101/LIN101_POT.geojson\")\n","### podaj nazwę pliku .json z siecią (network_filename), True oznacza, że poruszamy się w obu kierunkach po odcinkach (od punktu początkowego odcinka do końcowego, i odwrotnie)\n","T.import_network_geojson(network_filename=\"/content/drive/MyDrive/WPD_LIN101/LIN101_DR.geojson\",make_two_side=True)\n","### sprawdzamy poprawność geometrii sieci i węzłów generujących\n","#T.execute(\"SELECT * FROM network_geometry limit 10\").fetchall()\n","T.fix_geometry()\n","# eksportowany jest plik (out_filename) z liniami bez powtórzeń\n","# plik wynikowy (out_filename) może zostać odjęty od geometrii sieci w QGIS aby uzyskać powtarzające się odcinki i je poprawić\n","T.export_network_without_repetition_geojson(out_filename=\"/content/drive/MyDrive/WPD_LIN101/LIN101_DR_2kier_1.geojson\")\n"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"Z7bpUgm9moVE","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1681477421351,"user_tz":-120,"elapsed":22996,"user":{"displayName":"Jerzy Sławski","userId":"08084949085648484321"}},"outputId":"1593443f-84d0-405d-cff4-03fb1c7a78ef"},"outputs":[{"output_type":"stream","name":"stderr","text":[" [Elapsed Time: 0:00:00] |##################################| (Time: 0:00:00) \n"," [Elapsed Time: 0:00:00] |##################################| (Time: 0:00:00) \n","Distances [Elapsed Time: 0:00:00] |# | (ETA: 0:00:01) "]},{"output_type":"stream","name":"stdout","text":["No points problems\n"]},{"output_type":"stream","name":"stderr","text":["Distances [Elapsed Time: 0:00:01] |#########################| (Time: 0:00:01) \n"]},{"output_type":"stream","name":"stdout","text":["199.09189700000002\n"]},{"output_type":"stream","name":"stderr","text":["Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n"]}],"source":["# MODELOWANIA ALOKACYJNE\n","from pankus.taurus import Taurus \n","#Od tej pory możemy tworzyć obiekty Taurus\n","\n","# utworzenie obiektu\n","T=Taurus(database_name=\":memory:\") \n","### podaj nazwę pola - unikalny numer węzłów generujących (od_id_name), oraz podaj nazwę pliku z węzłami generującymi (od_filename)\n","T.import_od_geojson(od_id_name=\"ID\", od_filename=\"/content/drive/MyDrive/Sym3/JEDN_EWID-drog_istn_POT.geojson\")\n","### podaj nazwę pliku .json z siecią (network_filename), True oznacza, że poruszamy się w obu kierunkach po odcinkach (od punktu początkowego odcinka do końcowego, i odwrotnie)\n","T.import_network_geojson(network_filename=\"/content/drive/MyDrive/Sym3/siec_drog_istn.geojson\",make_two_side=True)\n","\n","### buduje graf wirtualny z pliku dróg, podajemy pole z kosztem przemieszczenia (cost_name, np. czas, albo długość drogi)\n","T.generate_connections(cost_name=\"KOSZT_1\")\n","### tworzymy tabelę odległości, podaje nam maksymalną odległość między węzłami, \n","### jeśli podaje 'inf' (czyli infinity) to jest to błąd i wracamy do opracowania sieci (mamy sieć składającą się z co najmniej 2 rozłącznych grafów)\n","T.distance()\n","max_distance=T.get_max_distance()\n","print(max_distance)\n","### ŹRÓDŁA CELE SELEKTYWNOŚĆ\n","### podaj kolumny w pliku węzłów generujących z wartościami źródeł (origins_name) i celów (destinations_name), jeśli importujemy selektywności z pola dodać: selectivity_name=\"\" (por. niżej pkt ad. 3>)\n","#T.import_model_parameters(origins_name=\"ORIGIN\",destinations_name=\"DESTINATION\")\n","T.import_model_parameters(origins_name=\"ORIGIN\",destinations_name=\"DESTINATION\", selectivity_name=\"SEL\")\n","### OPCJE: 1> wpisz wartość selektywności LUB 2> wpisz wartość frakcji podróży niezaspokojonych LUB 3> wczytaj wartości selektywności z pola w pliku węzłów generujących\n","### ad. 1> wartość selektywności (np. 0.00000025)\n","#T.create_particular_selectivity(0.000_005)\n","### ad. 2> wg R (frakcji podróży niezaspokojonych w sumie celów)\n","#T.create_escape_fraction_selectivity(0.15)\n","### PIERŚCIENIE ODLEGŁOŚCI\n","### budowanie pierścieni, OPCJE: 1> budowanie pierścieni z wagą (np. co 5 min), 2> budowanie wg liczby pierścieni (bierze max odległość i dzieli na równe części), 3> lista zadanych pierścieni\n","### ad. 1> pierścienie według zadanego skoku (wagi) w jednostkach kosztu (np. co 5 min)\n","T.build_costed_rings(5)\n","### ad. 2> maksymalna odległość podzielona na wskazaną liczbę równych przedziałów (szerokość w jednostkach kosztu)\n","#T.build_uniform_rings(15)\n","### ad. 3> zadana lista stref (aby ją utworzyć trzeba znać maksymalną odległość między węzłami) OPCJE: 3A> lista taka sama dla wszystkich rejonów, 3B> różne listy stref dla różnych rejonów\n","### ad. 3A> taka sama dla wszystkich rejonów lista szerokości kolejnych pierścieni oddzielanych przecinkami, wartości nie muszą być całkowite (fixed_rings_layout)\n","#T.build_rings_from_layout(fixed_rings_layout=[2.5,1,5,5,1])\n","### ad. 3B> gdy w różnych rejonach mają być różne listy stref, to wskazujemy kolumnę tematu punktów gdzie zapisane są listy stref różne dla każdego punktu (każde w formacie np. [2.5,1,5,5,1]), podaje się nazwę kolumny (fixed_rings_name)\n","#T.build_rings_from_layout(fixed_rings_name=\"lista_stref\")\n","### zmienia rejony w pierścieniach tak, że w pierwszej strefie pozostaje tylko rejon źródłowy, tzn. wszystkim rejonom poza tym, którego odległość źródeł od celów wynosi 0, przypisuje strefę o jeden większą niż do tej pory\n","T.only_origin_in_first_ring()\n","### KRYTYCZNY ZASIĘG KONTAKTU\n","### ograniczenie krytycznego zasięgu kontaktów, co robi: wyrzuca ze stref odległości dla każdego węzła te węzły celowe, \n","### których odległość od źódła jest większa od krytycznego zasięgu kontaktu\n","### jeśli jakieś punkty są w odległości większej niż zadana, to są usuwane z pierścieni odległości\n","T.critical_contact_distance(60)\n","T.save_model_parameters('origins','000Org')\n","T.save_model_parameters('destinations','000Dest')\n","T.save_model_parameters('selectivity','000Sel')\n","### pętla iteracyjna: obliczenie alokacji (a najpierw wymiany ruchu), range oznacza liczbę wykonywanych iteracji modelowań\n","for i in range(100):\n"," ### policzenie celów w pierścieniach\n"," T.ring_total()\n"," ### obliczenie wymiany ruchu\n"," T.motion_exchange()\n"," ### czy chcemy normalizować rozmieszczenie po iteracji aby utrzymać stałą sumę źródeł (źródła migrują do rejonów celowych, część z nich ucieka poza obszar)\n"," T.normalize_motion_exchange()\n"," ### OPCJE: 1> obliczenie przesunięcia celów, 2> obliczenie przesunięcia ogólnego\n"," ### ad. 1> oblicz przesunięcie celów, takie rozłożenie celów które jest proporcjonalne do sum zaakceptowanych kontaktów\n"," T.destination_shift()\n"," ### ad. 2> oblicz przesunięcie ogólne, takie rozłożenie celów i źródeł, które jest proporcjonalne do sum zaakceptowanych kontaktów\n"," #T.general_shift()\n"," T.limit_destinations(min_name='DEST_Min',max_name='DEST_Max',iteration=15 )\n","### przechowanie parametrów do późniejszego użytku\n"," #\n"," T.save_model_parameters('origins','{:03d}Org'.format(1+i))\n"," T.save_model_parameters('destinations','{:03d}Dest'.format(1+i))\n","# T.save_model_parameters('selectivity','{:03d}Sel'.format(1+i))\n","### eksportujemy wynikowy plik punktowy z selektywnością, liczbą źródeł i celów w kolejnych iteracjach modelowania (oraz inne informacje), warto zwrócić uwagę na nadanie jednoznacznej nazwy pliku wynikowego (out_od_filename)\n","T.export_od_geojson(out_od_filename=\"/content/drive/MyDrive/Sym3/przes_celow3A.geojson\")\n","### dla każdej pary punktów skrypt robi odcinek i przypisuje mu wielkość ruchu wynikającą z wymiany ruchu w ostatniej iteracji alokacji, warto zwrócić uwagę na nadanie jednoznacznej nazwy pliku wynikowego (out_filename)\n","# potencjalnie można oprogramować, aby taki plik był generowany po każdej iteracji\n","T.export_motion_exchange_geojson(out_filename=\"/content/drive/MyDrive/Sym3/wiezba_przes_celow3A.geojson\")"]},{"cell_type":"markdown","metadata":{"id":"MT-RtC7jFTFD"},"source":[]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":20280,"status":"ok","timestamp":1680269039952,"user":{"displayName":"Jerzy Sławski","userId":"08084949085648484321"},"user_tz":-120},"id":"rrfVjtWCjZK5","outputId":"6199b19c-f05b-4fb9-ef63-fb865692d0a4"},"outputs":[{"output_type":"stream","name":"stderr","text":[" [Elapsed Time: 0:00:00] |##################################| (Time: 0:00:00) \n"," [Elapsed Time: 0:00:00] |##################################| (Time: 0:00:00) \n","Distances [Elapsed Time: 0:00:00] |## | (ETA: 0:00:00) "]},{"output_type":"stream","name":"stdout","text":["No points problems\n"]},{"output_type":"stream","name":"stderr","text":["Distances [Elapsed Time: 0:00:01] |#########################| (Time: 0:00:01) \n"]},{"output_type":"stream","name":"stdout","text":["199.09189700000002\n"]},{"output_type":"stream","name":"stderr","text":["Intervening Opportunities [Elapsed Time: 0:00:00] |#########| (Time: 0:00:00) \n","Load [Elapsed Time: 0:00:00] |##############################| (Time: 0:00:00) \n","Distances [Elapsed Time: 0:00:01] |#########################| (Time: 0:00:01) \n","Load [Elapsed Time: 0:00:00] |##############################| (Time: 0:00:00) \n","Distances [Elapsed Time: 0:00:01] |#########################| (Time: 0:00:01) \n","Load [Elapsed Time: 0:00:00] |##############################| (Time: 0:00:00) \n","Distances [Elapsed Time: 0:00:01] |#########################| (Time: 0:00:01) \n","Load [Elapsed Time: 0:00:00] |##############################| (Time: 0:00:00) \n","Distances [Elapsed Time: 0:00:01] |#########################| (Time: 0:00:01) \n","Load [Elapsed Time: 0:00:00] |##############################| (Time: 0:00:00) \n","Distances [Elapsed Time: 0:00:01] |#########################| (Time: 0:00:01) \n","Load [Elapsed Time: 0:00:00] |##############################| (Time: 0:00:00) \n"]}],"source":["#MODELOWANIA TRANSPORTOWE\n","from pankus.taurus import Taurus \n","#Od tej pory możemy tworzyć obiekty Taurus\n","\n","# utworzenie obiektu\n","T=Taurus(database_name=\":memory:\") \n","### podaj nazwę pola - unikalny numer węzłów generujących (od_id_name), oraz podaj nazwę pliku z węzłami generującymi (od_filename)\n","T.import_od_geojson(od_id_name=\"ID\", od_filename=\"/content/drive/MyDrive/Sym3/JEDN_EWID-drog_istn_POT.geojson\")\n","### podaj nazwę pliku .json z siecią (network_filename), True oznacza, że poruszamy się w obu kierunkach po odcinkach (od punktu początkowego odcinka do końcowego, i odwrotnie)\n","T.import_network_geojson(network_filename=\"/content/drive/MyDrive/Sym3/siec_drog_istn.geojson\",make_two_side=True)\n","\n","### buduje graf wirtualny z pliku dróg, podajemy pole z kosztem przemieszczenia (cost_name, np. czas, albo długość drogi)\n","T.generate_connections(cost_name=\"KOSZT_1\")\n","### tworzymy tabelę odległości, podaje nam maksymalną odległość między węzłami, \n","### jeśli podaje 'inf' (czyli infinity) to jest to błąd i wracamy do opracowania sieci (mamy sieć składającą się z co najmniej 2 rozłącznych grafów)\n","T.distance()\n","max_distance=T.get_max_distance()\n","print(max_distance)\n","\n","### ŹRÓDŁA CELE SELEKTYWNOŚĆ\n","### podaj kolumny w pliku węzłów generujących z wartościami źródeł (origins_name) i celów (destinations_name), jeśli importujemy selektywności z pola dodać: selectivity_name=\"\" (por. niżej pkt ad. 3>)\n","#T.import_model_parameters(origins_name=\"ORIGIN\",destinations_name=\"DESTINATION\")\n","T.import_model_parameters(origins_name=\"ORIGIN\",destinations_name=\"DESTINATION\", selectivity_name=\"SEL\")\n","### OPCJE: 1> wpisz wartość selektywności LUB 2> wpisz wartość frakcji podróży niezaspokojonych LUB 3> wczytaj wartości selektywności z pola w pliku węzłów generujących\n","### ad. 1> wartość selektywności (np. 0.00000025)\n","#T.create_particular_selectivity(0.000005)\n","### ad. 2> wg R (frakcji podróży niezaspokojonych w sumie celów)\n","# T.create_escape_fraction_selectivity(0.15)\n","### ad. 3> wartość selektywności z pola w pliku węzłów (odrębna dla każdego węzła) - wcześniej zostały przejęte z pola (selectivity_name=\"\"), por. wyżej\n","### PIERŚCIENIE ODLEGŁOŚCI\n","### budowanie pierścieni, OPCJE: 1> budowanie pierścieni z wagą (np. co 5 min), 2> budowanie wg liczby pierścieni (bierze max odległość i dzieli na równe części), 3> lista zadanych pierścieni\n","### ad. 1> pierścienie według zadanego skoku (wagi) w jednostkach kosztu (np. co 5 min)\n","T.build_costed_rings(5)\n","### ad. 2> maksymalna odległość podzielona na wskazaną liczbę równych przedziałów (szerokość w jednostkach kosztu)\n","#T.build_uniform_rings(15)\n","### ad. 3> zadana lista stref (aby ją utworzyć trzeba znać maksymalną odległość między węzłami) OPCJE: 3A> lista taka sama dla wszystkich rejonów, 3B> różne listy stref dla różnych rejonów\n","### ad. 3A> taka sama dla wszystkich rejonów lista szerokości kolejnych pierścieni oddzielanych przecinkami, wartości nie muszą być całkowite (fixed_rings_layout)\n","#T.build_rings_from_layout(fixed_rings_layout=[2.5,1,5,5,1])\n","### ad. 3B> gdy w różnych rejonach mają być różne listy stref, to wskazujemy kolumnę tematu punktów gdzie zapisane są listy stref różne dla każdego punktu (każde w formacie np. [2.5,1,5,5,1]), podaje się nazwę kolumny (fixed_rings_name)\n","#T.build_rings_from_layout(fixed_rings_name=\"lista_stref\")\n","### zmienia rejony w pierścieniach tak, że w pierwszej strefie pozostaje tylko rejon źródłowy, tzn. wszystkim rejonom poza tym, którego odległość źródeł od celów wynosi 0, przypisuje strefę o jeden większą niż do tej pory\n","T.only_origin_in_first_ring()\n","### KRYTYCZNY ZASIĘG KONTAKTU\n","### ograniczenie krytycznego zasięgu kontaktów, co robi: wyrzuca ze stref odległości dla każdego węzła te węzły celowe, \n","### których odległość od źódła jest większa od krytycznego zasięgu kontaktu\n","### jeśli jakieś punkty są w odległości większej niż zadana, to są usuwane z pierścieni odległości\n","T.critical_contact_distance(60)\n","\n","### OBLICZENIE WYMIANY RUCHU PRZY ZADANYCH ŹRÓDŁACH I CELACH\n","### policzenie celów w pierścieniach\n","T.ring_total()\n","### obliczenie wymiany ruchu\n","T.motion_exchange()\n","\n","# inicjalizcja/zerowanie tabel obciążenia \n","### tworzona lub czyszczona jest przestrzeń, gdzie przechowywane jest gdzie jak kto jedzie\n","T.initialize_load()\n","# Obciążanie sieci działa dla najkrótszej kosztowo ścieżki od żródła do celu.\n","# Każdy odcinek drogi który jest na ścieżce dostaje obciążenie od kontaktu pomiędzy źródłem a celem.\n","# Może dostać frakcję kontaktu (teoretycznie).\n","\n","### ZWYKŁE OBCIĄŻENIE\n","# oblicza obciążenie dla każdej najkrótszej kosztowo ścieżki\n","### można wskazać, czy obciążamy najkrótsze ścieżki całym ruchem czy jego częścią (frakcją), jeśli chcemy obciążyć cąłym ruchem, to parametr wynosi fraction=1.0, jeśli np. połową to fraction=0.5\n","T.path_and_load(fraction=1.0)\n","### obciążenie przechowywane jest wraz z danymi/właściwościami sieci (będzie to kolumna 'load00' w danych wynikowych, i lepiej tej nazwy nie zmieniać)\n","# we save load under the given property name\n","T.save_load(\"load00\")\n","\n","### OBCIĄŻENIE Z WYSYCANIEM\n","### Obciążenie z wysycaniem to typ, w którym możemy modelować w kolejnych iteracjach zmianę najkrótszych ścieżek w zależności od obciążenia które jest w danym momencie policzone\n","### następuje reinicjalizacja stresu jako że musimy wyzerować tabele przechowujące informacje \n","T.initialize_load()\n","### Pętla iteracyjna obliczeń, parametr (times) wskazuje liczbę iteracji i oznacza, że w każdej iteracji sieć zostanie obciążona 1/(times) frakcją przepływów obliczonych w wymianie ruchu\n","times=5\n","for i in range(times):\n"," ### sprawdzamy najkrótsze odległości w grafie\n"," T.distance()\n"," # nałożenie frakcji obciązenia (1/(times), np. 1/5)\n"," T.path_and_load(fraction=(1/times))\n"," # przechowanie obliczonego obciążenia w tabeli sieci w polu pod daną nazwą (np. load01)\n"," # jeśli tam coś było to jest usuwane\n"," T.save_load(\"load01\")\n"," # klocek jest tożsamy z generate_connections ale na sterydach \n"," # generuje nowe wagi biorąc pod uwagę wartości z atrybutu load01\n"," # oraz przepustowości z throughput (\"granica przepustowości\")\n"," ### sieć jest obciążona częścią ruchu, sprawdzamy, na ile zmieniła się przepustowość odcinków w związku z obciążeniem dotychczasowym,\n"," ### na tej podstawie tworzymy nową tabelę odległości uwzględniającą nowe przepustowości sieci\n"," ### przepustowość to taka wartość (wielkość obciążenia), że jak obciążenie osiągnie wartość przepustowości to koszt pokonania odcinka sieci wzrasta dwukrotnie\n"," ### T.load_cost_connections(\"pole do zapisania obciążenia\",\"granica przepustowości\",\"koszt przemieszczania się po odcinku (np. czas pokonania)\")\n"," T.load_cost_connections(\"load01\",\"PRZEPUST_1\",\"KOSZT_1\")\n"," # zatem wynikiem działania tego klocka jest odpowienie stworzenie grafu połączeń\n"," # graf ten jest inny niż graf oryginalnej sieci \n"," # wagi są w postaci koszt*(1+frakcja_wypełnienia^4)\n","\n","### tworzony jest graf prostoliniowy więźby ruchu z obciążeniami odcinków z id źródła, id celu, przepływ a-b, b-a, oraz frakcje w ogóle ruchu pochodzącego ze źródła\n","### dla każdej pary punktów rysowany jest odcinek i przypisuje mu się wielkość ruchu wynikającą z wymiany ruchu (obliczenie T.motion_exchange())\n","### warto zwrócić uwagę na nadanie jednoznacznej nazwy pliku wynikowego (out_filename)\n","T.export_motion_exchange_geojson(out_filename=\"/content/drive/MyDrive/Sym3/wiezba_transp3A.geojson\")\n","### T.export_network_geojson() eksportuje sieć z obciążeniem, gdzie w polach stress00 i kolejnych zapisywane są obciażenia uzyskane w symulacjach\n","### warto zwrócić uwagę na nadanie jednoznacznej nazwy pliku wynikowego (out_network_filename)\n","T.export_network_geojson(out_network_filename=\"/content/drive/MyDrive/Sym3/siec_istn_with_load3A.geojson\")"]},{"cell_type":"markdown","metadata":{"id":"6OyqtClPJ2rO"},"source":[]},{"cell_type":"markdown","metadata":{"id":"VSPiGZHJ74qv"},"source":["# Sidenote querries"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"V8PJ5E8KT30V"},"outputs":[],"source":[]}],"metadata":{"colab":{"collapsed_sections":["aEQ2XDj1cEPE"],"provenance":[{"file_id":"1HdXaahOsxoOszT75rpYUGp6Is7urh04C","timestamp":1678715341219},{"file_id":"1DYKP49rCv2eLnruQcHYxTE4oktre0thL","timestamp":1646725979729},{"file_id":"1f6DbODYgZCIXNZenWgiVRq0IQnhc1Jo0","timestamp":1645691624231},{"file_id":"1wvg3XHqAxSp7VvG7RwynHyI8If4KS4hK","timestamp":1645691146397}]},"kernelspec":{"display_name":"Python 3","name":"python3"},"language_info":{"name":"python"}},"nbformat":4,"nbformat_minor":0}