Export

by Micha ⌂, Bad Vilbel, Friday, August 12, 2022, 12:18 (49 days ago) @ H-1

Hallo Heinz,

Und wäre es eventuell möglich in den HTML–Report auch die Netzskizze zu integrieren?

Jain. Java bietet leider keine Möglichkeit, den Plot als Vektorgraphik (bspw. SVG) zu exportieren, sondern unterstützt nur eine Art Screenshotfunktion, die dann ein Rasterbild bspw. als PNG erzeugt. Diese Funktion existiert auch beim Plot bereits. Dort ist es möglich, die aktuelle Ansicht als PNG zu exportieren. Da es sich um einen Screenshot handelt, funktioniert das natürlich nur, wenn auf dem Canvas-Element tatsächlich etwas gezeichnet wurde. Hier liegt also schon die größte Hürde. Wenn man den Plot nie aufgerufen hat, wird man auch kein Bild erzeugen können auf diese Weise. Um hiervon unabhängig zu sein, müsste man praktisch für den Report die Plotfunktion noch einmal implementieren. Dazu fehlt mir ein wenig die Motivation, da man derzeit schon Bilder vom Netz exportieren kann.
Das zweite Problem, welches ich sehe, ist, dass die Anzahl an Dateien zunehmen, die zum Report gehören. Bisher wird eine einzige HTML Datei generiert, die alles enthält. Die kann man kopieren, archivieren, verschicken usw., da sie vollständig ist. Das Netz (sofern es ein Rasterbild ist), müsste in einer zusätzlichen Bilddatei gespeichert werden. Nun muss man beim Kopieren, Archivieren oder Verschicken schon aufpassen, dass man alles zusammenhält. Ja, es gibt die Möglichkeit, base64-codierte Bilder direkt im Dokument abzuspeichern. Aber dies würde die Datei um ein vielfaches aufblähen, sodass dies mMn. keine Alternative ist.
Solange ich keinen sinnvollen SVG-Export habe, erscheint mir der Aufwand zu groß.

Wenn Ihr in Eurem Workflow jedoch immer einen Netzplot erzeugt während der Analyse, dann könnte dieser "automatisch" in den Report eingebunden werden, in dem im Template einfach ein

<img src="netzplot.png" alt="Netzplot">

an der gewünschten Stelle ergänzt werden muss. Diese Option habt Ihr immer - auch jetzt schon.

Neben dem sehr ausführlichen HTML–Report wäre es für uns hilfreich, wenn es neben der Punktgruppenspezifischen Exportfunktion über die rechte Maustaste in den jeweiligen Punktarten einen zusammenfassenden kompakten Export gäbe. Vielleicht in der Menüleiste unter REPORT?

Ja, dass ist kein Problem. Damit man nicht nur Dateien mit der Endung HTML erzeugen kann, habe ich eine modifizierte JAG3D Vorversion mal erzeugt. Diese kannst Du hier herunterladen zum Testen: JAG3Dv20220812_Windows.zip. In dieser Version wird der Name des Templates nach einer möglichen Endung durchsucht. Nehmen wir an, Dein Template heißt Coordinates.txt.ftlh, dann ist der Name Coordinates und die favorisierte Endung txt. Die Endung ist unter Windows vor allem wichtig, damit die Datei (der Report) direkt mit einem Standardprogramm geöffnet wird, sonst aber nicht von belangen. Wenn Du die alte bisherige Version von JAG3D nutzt, dann würden auch Textdateien die Endung html erhalten und Du müsstest die Datei nachträglich umbenennen. Es ist also nur ein kleines Feature zur Arbeitserleichterung.

Um Deine Ausgabe zu generieren, benötigst Du ein neues (zusätzliches) Template. Speichere dieses Template im Verzeichnis JAG3D\resources\ftl\jag3d\ ab. JAG3D wird beim nächsten Start dann automatisch unter dem Reiter Report im Hauptmenü neben dem Default-Template Dein zusätzliches Template anbieten. Somit ist auch sichergestellt, dass beim nächsten Update Dein Template nicht überschrieben wird, da Du hier einen individuellen Namen vergeben hast. Inhaltlich könnte die Datei wie folgt aussehen - siehe unten. Kopiere den gezeigten Code in die Datei Coordinates.txt.ftlh und speichere diese in JAG3D\resources\ftl\jag3d\ ab. Starte JAG3D und exportiere Deine Daten mit dem neuen Template. Das Template ist ganz rudimentär und soll Dir nur zeigen, wie man es angeht. Du kannst es gern an Deine Anforderungen anpassen und umformatieren. Die Dokumentation von Freemaker lässt kaum Wünsche offen. Du kannst also sehr flexibel Deine individuellen Ausgaben generieren.


Viele Grüße
Micha

ASCII-Export: Coordinates.txt.ftlh

<#ftl output_format="plainText" encoding="utf-8">
 
<#-- Decimal format w.r.t. user preferences -->
<#assign df_length             = "${digits_length???then(digits_length, 0.00000)};;                      roundingMode=halfEven decimalSeparator='.' infinity='∞' nan='NaN'">
<#assign df_length_uncertainty = "${digits_length_uncertainty???then(digits_length_uncertainty, 0.00)};; roundingMode=halfEven decimalSeparator='.' infinity='∞' nan='NaN'">
 
<#macro printFormattedNumber value format>
 <#t>${value?string[format]?left_pad(15, " ")}<#t>
 <#return>
</#macro>
 
<#-- Define the table header names -->
<#assign header_id          = "Name">
<#assign header_east        = "East">
<#assign header_north       = "North">
<#assign header_up          = "Up">
<#assign header_sigma_east  = "σy">
<#assign header_sigma_north = "σx">
<#assign header_sigma_up    = "σz">
<#assign header_type        = "Type">
<#-- Define a placeholder for empty values -->
<#assign empty_value        = "-">
 
<#-- Create list of points -->
<#if point_groups??>
 ${header_id?right_pad(15, " ")}<#t>
 ${header_type?right_pad(15, " ")}<#t>
 ${header_east?left_pad(15, " ")}<#t>
 ${header_north?left_pad(15, " ")}<#t>
 ${header_up?left_pad(15, " ")}<#t>
 ${header_sigma_east?left_pad(15, " ")}<#t>
 ${header_sigma_north?left_pad(15, " ")}<#t>
 ${header_sigma_up?left_pad(15, " ")}<#t>
 
 <#list point_groups as group>
  <#assign point_type = "">
  <#if group.type == "REFERENCE_POINT">
   <#assign point_type = "Reference">
  <#elseif group.type == "STOCHASTIC_POINT">
   <#assign point_type = "Stochastic">
  <#elseif group.type == "DATUM_POINT">
   <#assign point_type = "Datum">
  <#elseif group.type == "NEW_POINT">
   <#assign point_type = "Unknown">
  </#if>
  <#list group.points as point>
    ${point.name?right_pad(15, " ")}<#t>
    ${point_type?right_pad(15, " ")}<#t>
    <#if group.dimension != 1>
     <@printFormattedNumber value=point.y format=df_length/>
     <@printFormattedNumber value=point.x format=df_length/>
    <#else>
     ${empty_value?left_pad(15, " ")}<#t>
     ${empty_value?left_pad(15, " ")}<#t>
    </#if>
    <#if group.dimension != 2>
     <@printFormattedNumber value=point.z format=df_length/>
    <#else>
     ${empty_value?left_pad(15, " ")}<#t>
    </#if>
    <#if group.type != "REFERENCE_POINT" && group.dimension != 1>
     <@printFormattedNumber value=point.sigma_y format=df_length_uncertainty/>
     <@printFormattedNumber value=point.sigma_x format=df_length_uncertainty/>
    <#else>
     ${empty_value?left_pad(15, " ")}<#t>
     ${empty_value?left_pad(15, " ")}<#t>
    </#if>
    <#if group.type != "REFERENCE_POINT" && group.dimension != 2>
     <@printFormattedNumber value=point.sigma_z format=df_length_uncertainty/>
    <#else>
     ${empty_value?left_pad(15, " ")}<#t>
    </#if>
 
  </#list>
 </#list>
</#if>

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

Tags:
JAG3D, Plot, Report, Template, Freemarker, Dateierweiterung


Complete thread:

 RSS Feed of thread