# inlezen van polygoon.svg met daarin de koordinaten van het polygoon # # en deze daaruit destilleren # # mogelijk M (absolute koordinaten) en mogelijk m (relatieve koordinaten) # # vervolgens txt-file met de punten inlezen en kijken of deze binnen of buiten het polygoon liggen # # het is uitermate verwarrend dat de SCHERM koordinaten van de cursor voor y linksonder (0,0) is # terwijl voor SVG in de berekeningen (0,0) linksboven van het dokument ligt bij (0,1052.36) (uitgesrukt in scherm/cursor coordinaten) # de scherm/cursor koordinaten zou ik alleen moeten gebruiken om te checken/vergelijken met de figuur, maar # in de txt-file gebruik ik schern/cursor koordinaten!!! dus om te vergelijken moet ik DIE gebruiken import xml.sax import xml.sax.handler import sys from shapely.geometry import Point from shapely.geometry.polygon import Polygon import re # nu wordt de sub-class EmpHandler gedefineerd # You need to subclass xml.sax.ContentHandler and obtain ContentHandler # The ContentHandler handles tags and attributes class EmpHandler(xml.sax.handler.ContentHandler): def __init__(self): self.inPath = False def startElement(self, name, attributes): aantal = 0 aantalc = 0 if name== 'g': attribuutnamen = attributes.getNames() if "inkscape:label" in attribuutnamen: print(name, "**************", attributes.getValue('inkscape:label')) f.write(attributes.getValue('inkscape:label') + "\n") else: print(name,"**************") print(attribuutnamen, type(attribuutnamen)) f.write(name + "-begin\n") self.inG = True if name== 'path': print(attributes.getValue('d')) f.write(attributes.getValue('d') + "\n") self.inPath = True koordinaten = attributes.getValue('d') splitkoordinaten = koordinaten.split() if splitkoordinaten[0] == "m": print("relatieve koordinaten") relatief = "ja relatief" else: relatief = "absoluut" print("absolute koordinaten") del splitkoordinaten[0] print() print(len(splitkoordinaten)) print() opgelet = "niksaandehand" #splitkoordinaten is een list of strings for x in splitkoordinaten: koordinatenpaar = x.split(",") if koordinatenpaar[0] == "c": print("koordinatenpaar[0]=", koordinatenpaar[0]) opgelet = "oeps" wachten = input("wachten ...") if koordinatenpaar[0] == "l": print("koordinatenpaar[0]=", koordinatenpaar[0]) opgelet = "oeps" wachten = input("wachten ...") if koordinatenpaar[0] == "z": print("koordinatenpaar[0]=", koordinatenpaar[0]) opgelet = "oeps" wachten = input("wachten ...") if koordinatenpaar[0] == "m": print("koordinatenpaar[0]=", koordinatenpaar[0]) opgelet = "oeps" wachten = input("wachten ...") #koordinatenpaar is een list of two strings if opgelet == "niksaandehand": if relatief == "absoluut": xy = (float(koordinatenpaar[0]), height-float(koordinatenpaar[1])) else: xy = (float(koordinatenpaar[0]), float(koordinatenpaar[1])) koordinatenlijst.append(xy) opgelet = "niksaandehand" # hier begint het programma BEGIN BEGIN BEGIN print("IK BEGIN NU") koordinatenlijst = [] nieuwekoordinatenlijst = [] height = 1052.36 heightrelatief = 1052.36 relatief = "weet niet" f = open("konturlineientest4.txt", "w") parser = xml.sax.make_parser() #creation of a parser object handler = EmpHandler() parser.setContentHandler(handler) parser.parse('Konturinien_Schmid_1975 alleenlijnen.svg') f.close() wachten = input("wachten ...")