Koordinaten importieren
  • Lixe Juni 2007
    Hier eine Anfrage von einem einfachen Benutzer.

    Für eine archäologische Studie habe ich vor, auf einem Grabungsplan die Verteilung unterschiedlicher Funde darzustellen. Den Plan möchte ich als Vektordatei erstellen und von dort die Koordinaten der möglichen Fundpunkte (etwas über 1000) ablesen. Diese sollen in eine Datenbank aufgenommen werden, um sie dort zusammen mit den archäologischen Daten zu filtern. Die dabei erhaltenen Gruppen von Koordinatenpaaren sollen wiederum im Grabungsplan durch Symbole (Klone) dargestellt werden.

    Es wäre eine mühsame Arbeit, die Klone für die einzelnen Fundpunkte von Hand zu setzen. Weiß jemand, ob Möglichkeiten bestehen, die Koordinaten nach Inkscape zu importieren, so dass sie dort die Position jeweils einer Instanz eines Klons festlegen? Ist es möglich, diese Aufgabe im xml-Editor zu bewältigen?

    Ich danke für Hilfe und Anregungen.
  • tobiastobias Juni 2007
    Grundsätzlich sollte das gehen. Du brauchst dafür allerdings eine Möglichkeit deine Koordinaten in die SVG-Koordinaten umzurechnen. Ich denke ganz ohne Programmieren wirst du nicht auskommen.
  • Lixe Juni 2007
    Kann man sich das autodidaktisch beibringen?
  • Lixe Juni 2007
    Die Koordinaten sollen ja aus der SVG-Datei bestimmt werden. Ist es da nicht möglich, die SVG-Koordinaten direkt abzulesen?
  • tobiastobias Juni 2007
    Zeig doch mal ein kleine Beispiel.
  • MaracujaMaracuja Juni 2007
    Entweder XSL, oder PHP würde ich vorschlagen.
    XSL mit XML-"Datenbank"
    PHP mit PostgreSQL oder MySQL-Datenbank

    Du willst die Koordinaten aus der SVG ablesen?
    Wie das?

    Genau, zeig ein Beispiel.
  • Lixe Juni 2007
    O je, o je, o je. Vielleicht bin ich ein zu einfacher Benutzer für diese Frage. Ein Beispiel gibt es noch nicht, außer dass ich oben beschriebenes Vorhaben hege. Da ich annehme, dass solche Fragestellungen öfters auftauchen, habe ich es hier zur Sprache gebracht. Meine Datenbank ist mit OpenOffice.org Base erstellt, also MySQL. Ist es vielleicht besser, die Daten in ein anderes Format zu überführen?

    Bisher habe ich mit Illustrator gearbeitet und die Symbole (ich glaube, so heißen die Klone dort) manuell gesetzt. Diesen Vorgang würde ich gerne irgendwie automatisieren. Leider bin ich mit xml gar nicht vertraut. Ich habe mir lediglich einige vorhandene SVG-Dateien mit Inkscape im xml-Editor angesehen. Meine Hoffnung war, dass man die Koordinaten in irgendein Stück Code schreiben könnte, um dieses dort einzusetzen. Meine Frage ist vor allem, ob dies ein Holzweg ist oder nicht. Umgekehrt nehme ich an, dass man die Koordinaten bestehender Punkte aus dem xml-Code herauskopieren könnte. Ich bitte mich darauf hinzuweisen, sollte ich eine völlig falsche Vorstellung von der ganzen Sache haben. Unter Umständen gibt es ja auch viel bessere Lösungsansätze.

    Wenn ich richtig verstehe, ist dies keine Standard-Aufgabe. Ich danke allen geduldigen Profis für Hinweise und wäre schon froh zu wissen, in welche Richtung ich mich "einlesen" müsste, um einer Lösung näher zu kommen.
  • Lixe Juni 2007
    Hat sich die Aufforderung, ein Beispiel zu zeigen, auf die Aufgabenstellung bezogen? Für den Fall, dass unklar geblieben ist, was eigentlich die Anforderungen sind, hier noch einmal das Problem in detaillierterer Form:

    Für meine Dissertation untersuche ich ein frühmittelalterliches Gräberfeld. Während der Ausgrabung ist ein Plan erstellt worden, auf dem die einzelnen Gräber eingezeichnet sind. Diese überschneiden sich nicht, so dass jedes Grab eine eindeutige räumliche Lage hat. Diese würde jeweils durch die Koordinaten beschrieben, die später importiert werden sollen. Es soll eine Reihe von Verteilungskarten hergestellt werden, auf denen jeweils diejenigen Gräber herausgehoben sind, die ein bestimmtes Charakteristikum eint, z. B. alle Gräber, die Waffen enthalten oder alle Bestatteten, die zu Lebzeiten an Tuberkulose litten. Diese Informationen sind in besagter Datenbank enthalten. Es wird also verschiedene Gruppen von Gräbern geben, die jeweils durch ein Symbol hervorgehoben werden sollen.
  • tobiastobias Juni 2007
    Du musst einfach bedenken, das die meisten hier von frühmittelalterlichen Gräberfeldern keine Ahnung haben. Aber grundsätzlich glaube ich aber das es schon möglich ist mit Inkscape. Ein Beispiel hätte ich nur gerne, da ich mir so wenig unter dem ganzen vorstellen kann. Aber vielleicht kann ich mit ein par Fragen noch mehr aus dir heraus locken. :)
    Es gibt also einen Plan. Was ist das für ein Plan, ist der klassisch auf Papier oder schon im Rechner als Vectorzeichnung?
    Kannst du uns einen solchen Plan zeigen?
    Welche Daten hast du den jetzt schon?
    Was seht in der Datenbank? Am besten zeig uns auch hier eins/zwei Beispiel-Datensätze.

    Informationen über das SVG Koordinatensystem findest du übrigens hier:
    http://www.w3.org/TR/SVG11/coords.html
  • mmjmmj Juni 2007
    Hallo,

    wie du bereits schreibst, ist dies keine "geläufige" Aufgabenstellung für ein Vektorzeichenprogramm wie Inkscape.
    Du kannst sicher aus einer Datenbank mittels einer einfachen Skriptsprache einen XML-Code erzeugen, der dir Objekte entsprechend positioniert. Du willst aber wohl die andere Richtung (hab' mir nicht alles durchgelesen). Da kommt zusätzlich ein weiteres Problem dazu. Die Koordinaten stehen oft nicht im Klartext da. Objekte werden gruppiert, transformiert (gedreht, gestaucht, verzerrt), etc.. Dadurch wirst du erst die realen Positionen errechnen müssen. Das ist alles irgendwie möglich. Doch dazu darfst du wohl erstmal die SVG-Dokumentation lesen. Die Arbeitserleichterung wird bei weitem in keinem Verhältnis zum Aufwand stehen (vor allem, wenn man nicht aus dem Bereich Mathematik oder Ingeneurwissenschaft kommt).

    Für solche Aufgaben gibt es CAD-Lösungen aus dem 2D-Bereich. Die sind darauf ausgelegt, und unterstützen dich da sehr. Kommerzielle Lösungen wie AutoCAD werden es wohl ermöglichen auf einfachsten Wege diese Daten zu im-/exportieren. Bei freien Lösungen ist tendenziell etwas mehr Handarbeit nötig. QCAD scheint nicht skriptbar zu sein, aber wenn du etwas schaust, wirst du wohl auch freie Software finden, die das ermöglicht.
  • Lixe Juni 2007
    Danke, dass Ihr Euch so viel Mühe mit einem Anfänger nehmt.

    Den Plan gibt es bis jetzt nur auf dem Papier. In der Anlage findet Ihr ein kleines Beispiel, wie ich mir das Ergebnis ungefähr vorstelle. Das Gräberfeld ist ein anderes und die die eingetragenen Punkte sind Nonsens. Nur damit Ihr eine Vorstellung bekommt. Außerdem ist in diesem Fall die Grafik nicht vektorisiert. Dies würde ich aber auch nur aus gestalterischen Gründen vornehmen. Die Punkte und Quadrate im Gräberfeld sind Klone der entsprechenden Symbole im Kasten links unten. Diese sollen automatisch gesetzt werden. Bitte bedenkt, dass mein Gräberfeld wesentlich größer ist als dieses hier. Allerdings ist es gut möglich, dass mmj recht hat und die manuelle Eingabe zeitsparender ist. Andererseits kehrt die Aufgabe immer wieder. Ich dachte, so etwas brauche man auch in anderen Berufen...
    465K
  • Lixe Juni 2007
    Ok, man gibt sich Mühe und nimmt sich Zeit. Danke für beides.
  • tensetakel Juni 2007
    Hi zusammen..

    hmm.. klingt interessant und mit ein bisschen Programmiererfahrung in Java (Stichworte: HSQLDB, JDOM) könnte man da sicher einigermaßen schnell was schrauben.
    Aber ich denke, wenn keine Programmierkenntnisse/ein guter Satz an Zeit vorhanden ist, ist die manuelle Erstellung vielleicht sinnvoller. Das ist jetzt auf die Inkscape Idee und auf die Arbeit an dem einen Projekt (ca. 1000 Markierungen) gemessen.

    Mal schauen was sich noch ergibt... :)
  • MaracujaMaracuja Juni 2007
    Ich würd's spontan mit PP machen, wenn du es als WebApp haben willst.
    Sonst evtl XSL, wobei du da nicht aus MySQL auslesen kannst.
    Man kann mit SVG Symbole erstellen und sie in den DEFS definieren. Diese kann man dann mit USE benutzen (also Klon) und sie auch eindeutig positionieren.
    Falls du interesse hast, kann ich dir das in PHP schreiben. Jedenfalls das was du brauchst, so wie ich es verstanden habe. Schreib mir dann eine PrivNachricht...
    Gruß,
    Malte
  • fZapfZap Juni 2007
    XSL in Kombination mit Java/Saxon wäre in der Tat eine gute Idee zumal die Wertepaare der Koordinaten ja selber auch in in XML dargestellt werden könnten. Außerdem ist Python zu empfehlen, weil man hier zum eine sehr gute Auswahl an XML-Parsern sowie weiterer Module zur Verfügung hat.
  • Lixe Juni 2007
    Es scheint mehrere Lösungsansätze zu geben, die aber alle spezielle Kenntnisse erfordern.

    Hier noch eine Frage eines Laien. Ich habe mir gestern Abend etwas genauer Klone im xml-Editor angesehen. Die zusätzlichen Informationen, die einen Klon von einem anderen unterscheiden scheinen sehr wenige zu sein (Koordinatenangabe für die Transformation und u. U. eine ID). Diese in den xml-Editor einzugeben dauert etwa so lange wie neue Klone in der Benutzeroberfläche zu erstellen. Gibt es eine Möglichkeit, sich den xml-Code nicht im Editor, sondern als Fließtext anzeigen zu lassen? Und wie sehr würde dieser dann der Darstellung im Editor ähneln? Mein schlichtes Gemüt stellt es sich relativ einfach vor, mit Textbausteinen und Variablen aus der Datenbank eine Textdatei zusammenzustellen, die man dort einfach einfügen könnte. Das würde für einen Klon genauso viel Arbeit machen wie für hundert. Ist das naiv gedacht?
  • tobiastobias Juni 2007
    SVG-Dateien sind einfache Textdateien, du kannst sie dir also mit jedem Texteditor anschauen. Schau einfach mal rein, das ist alles "menschenlesbar".
  • ahoaho Juni 2007
    >Gibt es eine Möglichkeit, sich den xml-Code nicht im Editor, sondern als Fließtext anzeigen zu lassen?

    Ja, klar. SVG ist XML und ist dementsprechend ganz normaler Text. Das mit den Textbausteinen würde übrigens funktionieren.



    Anstatt "#foo" kommt da die id vom zu klonenden Objekt hin... x und y je nachdem... und das halt x-mal für jeden Klon einmal.

    Erzeuge am Besten vorher einen einzelnen Klon, damit du eindeutig sehn kannst an welcher Stelle die ganzen Klone platziert werden sollen.
  • Lixe Juni 2007
    Mittlerweile habe ich mir die Sache im Text-Editor angesehen und auch erfolgreich neue Klone "geschrieben". Jetzt muss ich nur noch die Datenausgabe meiner Datenbank über 'Daten in Text' regeln. Dabei erwarte ich aber keine Hindernisse. Danke allen Hinweisgebern.

    Eine Frage hätte ich allerdings noch, die mit dem Thema nur indirekt zu tun hat. Wenn ich richtig verstehe, positioniert Inkscape Objekte anhand der Koordinaten der linken unteren Ecke des Objekts. Bei Änderung der Objektgröße verschiebt sich daher der Mittelpunkt. In meinem Beispiel würden Klone, deren Größe verändert worden ist, nicht mehr in der Mitte des jeweiligen Grabes positioniert sein. Um dies wieder zu erreichen, müsste man die ganze Klonwolke entsprechend der Größenveränderung verrücken.

    In Illustrator kann man definieren, dass bei Objekttransformationen der Mittelpunkt eines Objekts fix bleibt und die Veränderungen symmetrisch zu diesem Punkt aufgeteilt werden. Es wird also das korrigierende Verrücken des Objektes automatisch ausgeführt. Gibt es eine ähnliche Funktion in Inkscape? Ich gebe zu, dass das eine Luxus-Frage ist. Wäre für Tipps aber dennoch dankbar.

Hey Fremder!

Sieht so aus als wenn du neu hier bist. Wenn du mitmachen willst, drücke einen dieser Buttons!

In dieser Diskussion