Die Verwendung eines Skripts, um den Import von Netzdaten aus GIS-Dateien oder zuvor geladenen GIS-Layern genauer zu steuern, ist eine erweiterte Funktion.
Skripte sollten nur von fachkundigen Benutzern mit Erfahrung in der Programmierung mit einer Skriptsprache verwendet werden.
Importskripte können mithilfe von VBScript geschrieben werden. Es kann hilfreich sein, im VBScript-Lernprogramm oder in der VBScript-Referenz im Internet nachzuschlagen, um weitere Informationen zu den Funktionen in VBScript zu erhalten. Beachten Sie, dass VBScript nicht mit Visual Basic, Visual Basic.NET, VBScript.NET oder Visual Basic for Applications identisch ist.
Sie können alle gängigen Funktionen in VBScript verwenden, um die Daten vor dem Importieren zu bearbeiten.
Anmerkung: Die VBScript-Komponente wird nicht mehr als Teil der Installation von InfoWorks WS Pro installiert. Sie wird zusammen mit Windows 10 und 11 installiert. In Zukunft wird sie möglicherweise von Microsoft als optionale Komponente bereitgestellt, sie kann jedoch über Optionale Features in Windows aktiviert werden.
Skript – Überblick
Das Skript enthält eine Reihe von öffentlichen Unterprogrammen mit folgendem Format:
OnBegin<tablename>
OnEnd<tablename>
OnBeginRecord<tablename>
OnEndRecord<tablename>
Die Namen lauten wie folgt:
-
OnBegin<tablename>: vor dem Importieren der Tabelle
-
OnEnd<tablename>: nach dem Importieren der Tabelle
-
OnBeginRecord<tablename>: vor dem Verarbeiten der einzelnen Datensätze. Genauer gesagt wird dies NACH dem Lesen der Daten, aber vor der Verarbeitung aufgerufen. Verarbeitung bedeutet in diesem Fall die normale Zuordnung der Importdaten zu den Feldern in InfoWorks WS Pro auf Grundlage der im Open Data Import Center eingerichteten Feldzuordnung.
-
OnEndRecord<tablename>: nach der normalen Zuordnung der Importdaten zu den Feldern in InfoWorks WS Pro, ABER bevor die Daten in die Datenbank geschrieben werden.
Das Skript wird mit dem aktiven Skripterstellungshost ausgeführt. InfoWorks WS Pro sucht in der Liste der Unterprogramme nach den oben beschriebenen öffentlichen Unterprogrammen. Zusätzlich zu diesen öffentlichen Unterprogrammen können Sie Folgendes tun:
- Definieren der vom Code verwendeten globalen Variablen
- Definieren anderer Unterprogramme, die von den oben aufgeführten öffentlichen Unterprogrammen aufgerufen werden. Zusätzliche Unterprogramme sollten als Privat deklariert werden.
Tabellennamen
Die Tabellennamen sind die Namen, die in der Liste Tabelle, in die Daten importiert werden sollen im Open Data Import Center angezeigt werden, wobei jedoch alle Leerzeichen im Namen entfernt werden. Beispiel
- Knoten
- Haltung
- FixedHead
- TransferNode
- Reservoir
Die Methode, die nach dem Importieren der einzelnen Datensätze für die Tabelle TransferNode aufgerufen wird, lautet OnEndRecordTransferNode.
Verwendung der öffentlichen Unterprogramme
-
OnBegin<tablename>: Der Hauptzweck von OnBegin besteht darin, Werte in globalen Skriptvariablen zu initialisieren, die später im Datensatz verwendet werden. Sie können auch aufgrund bestimmter Kriterien entscheiden, den Import abzubrechen.
-
OnEnd<tablename>
-
OnBeginRecord<tablename> und OnEndRecord<tablename>: Es macht kaum einen Unterschied, ob Sie Aufgaben in OnBeginRecord oder OnEndRecord ausführen, mit folgenden Ausnahmen:
- Wenn Sie wissen, dass Sie einen Datensatz nicht mehr verwenden werden, können Sie die Aufgabe auch in OnBeginRecord ausführen. Dadurch wird der Importvorgang beschleunigt.
- Wenn Sie ein Feld mit dem Skript konfigurieren, das auch von der normalen Feldzuordnung konfiguriert wird, müssen Sie dies in OnEndRecord tun. Andernfalls wird das Feld durch die normale Zuordnung überschrieben.
InfoWorks WS Pro-Eigenschaften und -Methoden
Es gibt eine Reihe von Methoden und Eigenschaften, die in InfoWorks WS Pro definiert sind und vom Skript aufgerufen werden können.
Beim Schreiben des Skripts muss vor den unten beschriebenen Eigenschaften und Methoden Importer stehen (z. B. Importer.MsgBox("Hello")).
Eigenschaften
-
boolean Abandoned und boolean TableAbandoned: Abandoned und TableAbandoned haben im Wesentlichen dieselbe Bedeutung. Wenn Sie sie auf True setzen, wird die weitere Verarbeitung der Tabelle gestoppt. Wenn Sie einen dieser Werte in OnBegin festlegen, wird die Tabelle nicht verarbeitet. Wenn Sie einen der beiden Werte in OnBeginRecord festlegen, wird der Datensatz nicht verarbeitet, und es werden keine weiteren Datensätze in der Tabelle verarbeitet. Wenn Sie einen der beiden Werte in OnEndRecord festlegen, WIRD der Datensatz verarbeitet, es werden jedoch keine weiteren Datensätze in der Tabelle verarbeitet. Diese werden vor der Verarbeitung jeder Importtabelle auf False gesetzt.
-
boolean WriteRecord: Wenn False festgelegt ist, wird dieser Datensatz nicht in die Datenbank geschrieben, aber der Import der Tabelle wird insgesamt fortgesetzt. WriteRecord dient nur in OnBeginRecord und OnEndRecord einem sinnvollen Zweck. Wenn der Wert in OnBeginRecord auf False festgelegt ist, erfolgt keine weitere Verarbeitung für diesen Datensatz, und OnEndRecord wird nicht aufgerufen. Wenn der Wert in OnEndRecord auf False festgelegt ist, wird der Datensatz nicht in die Datenbank geschrieben. Dieser Wert wird am Anfang jedes Datensatzes auf True gesetzt.
-
boolean DeleteRecord: Wird verwendet, um Objekte zu löschen. Wenn True festgelegt ist, wird dies als Löschanforderung interpretiert, da das Objekt möglicherweise nicht in InfoWorks WS Pro vorhanden ist. Wenn Sie eine Aktualisierung basierend auf der Asset-ID durchführen, werden die Asset-IDs der Objekte in der externen Datenquelle und der InfoWorks WS Pro-Tabelle verglichen, andernfalls wird die Objekt-ID verwendet. Der Wert der Eigenschaft DeleteRecord überschreibt den Wert der Eigenschaft WriteRecord.
Methoden
-
void MsgBox(BSTR text): MsgBox zeigt die Zeichenfolge in einem Meldungsfeld an. Verwenden Sie diese Option nicht, wenn Sie über viele Datensätze verfügen. Sie können das Skript nicht beenden, bevor die Verarbeitung abgeschlossen ist.
-
void OutputMessage(BSTR text, VARIANT messageType): OutputMessage protokolliert die Meldung im Ausgabefenster, in dem auch Fehler oder Warnungen angezeigt werden.
- text (erforderlich): Text, der im Ausgabefenster protokolliert werden soll.
- messageType (optional): Gültige Parameter sind:
- E: Fehlermeldung, die dem Text das Präfix 'Error:' voranstellt und die Anzahl der Verarbeitungsfehler inkrementiert.
- W: Warnmeldung, die dem Text das Präfix 'Warning:' voranstellt und die Anzahl der Warnungsfehler inkrementiert.
- I: Informationsmeldung, bei der dem Text 'Info:' vorangestellt wird.
-
VARIANT Field(BSTR fieldName): Ruft den Feldwert aus der externen Quelldatenbank, dem GIS-Layer oder der CSV-Datei ab. Die Variable fieldName ist der Name des externen Quellfelds. Es wird keine Einheitenkonvertierung durchgeführt.
Zuweisungsmethoden
-
Field(BSTR fieldName) = VARIANT newValue: Legt den Wert in InfoWorks WS Pro fest. In diesem Fall ist fieldName der Feldname in InfoWorks WS Pro. Werte werden immer so behandelt, als lägen sie in nativen InfoWorks WS Pro-Einheiten vor.