geoprocessingtools 3.0.0
Rapporteringsbibliotek for VisGI. Designet for ArcGIS Server og ArcGIS Pro.

<h1>GP Tools for ArcGIS og VisGI</h1>
<h3>Versjon 3.0.0</h3>
<p>&copy; Magnus Eikemo Larsen 2021</p>
<hr>
<h2>Installering</h2>
<p>

```
pip install -e .
```
Dette gjelder kun intern bruk. For bruk utenfra installeres biblioteket via: 

```
pip install gptools
```
</p>
<h2>Informasjon</h2>
<p>
    Dette er en nyskriving av GP Tools regimet til VisGI som kjÃ¸rer pÃ¥ ArcGIS Server i Bergen kommune sine interne systemer.
</p>
<p>
    Dette er andre gang regimet blir skrevet om for Ã¥ forbededre publiseringen til ArcGIS Server generelt pÃ¥ Test-serverne (Staging og Dev), men i all hovedsak for Produksjons-serveren (Prod). Derfor startet denne pakken pÃ¥ versjonsnummer 3.0.0.
</p>
<p>
<b>NB!</b> Husk Ã¥ sjekke <a href="#kjente-bugs">kjente bugs</a> fÃ¸r deploy til Prod.
<br><br><br>
</p>
<h2>Krav til biblioteket</h2>
<ul>
    <li>ArcGIS Pro mÃ¥ vÃ¦re installert pÃ¥ maskin/server</li>
    <li>Ved kjÃ¸ring av Tools mÃ¥ det kjÃ¸res pÃ¥ ArcGIS Pro sin variant av Python (3.6). Dette er fordi GP Toolene bruker en del Esri-biblioteker, blant annet ArcPy som ligger ferdig i installert ArcGIS Pro sin Python-versjon.</li>
    <li>Biblioteket mÃ¥ pip-installeres pÃ¥ samme Python-miljÃ¸ eller en kopi.</li>
    <li>Hvis Toolene skal videre til ArcGIS Server, sÃ¥ mÃ¥ biblioteket pip-installeres her ogsÃ¥. Publisering skjer som vanlig via ArcGIS Pro.</li>
    <li>WKHtmlToPdf mÃ¥ vÃ¦re installert pÃ¥ server eller miljÃ¸ for Ã¥ kunne gjÃ¸re om malene i rapportgeneratoren til PDF-dokumenter.</li>
</ul>
<br><br><br>
<h2>Bruk</h2>
<p>
Biblioteket inneholder flere nyttige delbiblioteker for Ã¥ kunne lage rapporter og kartutsrkifter fra Bergen Kommunes interne kartsystemer. Under er en beskrivelse av gitte funksjoner og kall du kan gjÃ¸re for Ã¥ bruke biblioteket:</p>
<h4>Nabovarselliste</h4>

```python
import arcpy
from ToolsLibrary import utilities
from ToolsLibrary import ReportPackage

fileName = ReportPackage.createNaboliste(selectedMatrikkelenhet, 
                                         naboersMatrikkelenheter,
                                         realsameier,
                                         omsokt,
                                         omsoktSameie, 
                                         uncheckedEiere)
    if fileName is not None:
        arcpy.AddMessage("Nabolisten er ferdig. Navnet er: " + fileName)
    else:
        arcpy.AddError("Det skjedde en feil under generering av Nabolisten. Fikk ikke tilbake et filnavn.")
```

<br><br><br>
<h2>Arkitektur</h2>
<p>
    Arkitekturen blir relativt lik som GP Tools regime 2.0, men alle toolene vil blitt slÃ¥tt sammen til en eneste pakke kalt ToolsLibrary, denne vil inneholde under-pakker som ReportPackage for rapportene, PrintPackage for utskriftsmalene osv.

Selve toolene blir plassert utenfor pakken ToolsLibrary og Importert inn i Toolboxene i ArcGIS Pro med korrekt grensesnitt. Derfra kan de kjÃ¸res i ArcGIS Pro og publiseres til ArcGIS Server. Alternativt kan kjÃ¸ringen lagres i SD-formatet og sendes til ArcGIS Server direkte, dette bÃ¸r vÃ¦re det ultimate mÃ¥let slik at publiseringen blir forenklet fra dagens regime.

Det vil eksistere en hovedfil som sÃ¸rger for generering av alle PDFene, denne kalles pdfConstructions.py. Herfra vil alle templates kunne bli gjengitt (rendered) med korrekt data og sendt videre til hovedfilene. For eksempel vil Naboliste.py fÃ¥ sin genereringsfunksjon fra pdfConstructions og trenger derfor Ã¥ bare Ã¥ sende inn riktig data.
<br><br><br>
</p>
<h2>Rapporters plassering og navngiving</h2>
<p>
All ferdige rapporter vil bli lagret i ToolsLibrary under en mappe som heter FinishedReports med prefiks. Eks. vil en naboliste fÃ¥: <b>naboliste_</b>XXX.pdf, mens en Partsliste vil fÃ¥ <b>partsliste_</b>XXX.pdf istedenfor.

Alle rapportenes navn utenom prefikset vil bestÃ¥ av 32-tegn som er en kombinasjon av store og smÃ¥ bokstaver samt tall. Dette er for Ã¥ skaffe mest mulig unike navn hver gang det lages en ny rapport.
<br><br><br>
</p>
<h2>Mappestruktur</h2>
<ul>
    <li>
        <b>ToolsLibrary</b> (Mappen som inneholder alle verktÃ¸y, funksjoner og objekter for GP Toolene og er ogsÃ¥ den pakken som skal installeres med PIP-install)
        <ul>
            <li><b>Data</b> (Inneholder databasekoblingene og Python-funksjonene som kobler opp databasene og spÃ¸r etter data. Dataconfig.ini befinner seg ogsÃ¥ her)</li>
            <li><b>Templates</b> (Inneholder HTML-filer og CSS-filer som definerer malene for PDF-rapportene)</li>
            <li><b>ReportPackage</b> (Inneholder funksjoner og objekter for rapportene: Naboliste, Partsliste, Planrapport Eiendom, Planrapport OmrÃ¥de og Digital Befaring)</li>
            <li><b>PrintPackage</b> (Inneholder funksjoner og objekter for utskriftene: Basiskart, Delingskart, Varslingskart, Plankart, Vegstatuskart og vanlig kartutksrift)</li>
            <li><b>MiscPackage</b> (Inneholder funksjoner og objekter for eksportering og importering av figurlister samt andre tools som ikke faller inn under kategoriene rapport eller utskrift)</li>
        </ul>
    </li>
</ul>
<br><br>
<h2>Config-fil</h2>
<p>
Det vil eksistere en config-fil i biblioteket, den vil bli plasser i Data-mappen som er beskrevet i <a href="#mappestruktur"><b>Mappestruktur</b></a> over. Denne filen heter dataconfig.ini. Navnet ble byttet fra databasestier_Bergen_Test.ini ettersom dette ble et delvis misvisende navn nÃ¥r config-filen begynte Ã¥ inneholde vesentlig mer enn bare databasestier.
<br><br><br>
</p>
<h2>Kjente bugs</h2>
<h5>Naboliste & Partsliste</h5>
<p>
PyODBC henter ikke ut alle hjemmelshavere fra spÃ¸rringen som gÃ¥r mot Naboliste og Partsliste. SpÃ¸rringene er sjekket i en SQL-klient og gir tilbake riktige data. Dette er muligens en bug i PyODBC-biblioteket som mÃ¥ fikses fÃ¸r deploy til Prod.  
</p>