Ejemplo n.º 1
0
def test_parse_area():
    geometry = Geometry('foo', 'bar', 'baz', 2056)
    area = geometry._parse_area(
        XML("""
        <Flaeche>
            <Surface>
                <Boundary>
                    <Polyline>
                        <COORD>
                            <C1>0</C1>
                            <C2>0</C2>
                        </COORD>
                        <COORD>
                            <C1>1</C1>
                            <C2>1</C2>
                        </COORD>
                        <COORD>
                            <C1>1</C1>
                            <C2>0</C2>
                        </COORD>
                    </Polyline>
                </Boundary>
            </Surface>
        </Flaeche>
        """), 2056)
    assert isinstance(area, Polygon)
    assert list(area.exterior.coords) == [(0, 0), (1, 1), (1, 0), (0, 0)]
Ejemplo n.º 2
0
def test_parse_coord():
    geometry = Geometry('foo', 'bar', 'baz', 2056)
    coord = XML("""
    <Coord>
        <C1>0</C1>
        <C2>1</C2>
    </Coord>
    """)
    assert geometry._parse_coord(coord, 2056) == (0.0, 1.0)
    assert geometry._parse_coord(coord,
                                 21781) == geometry._reprojector.transform(
                                     (0.0, 1.0), from_srs=21781, to_srs=2056)
Ejemplo n.º 3
0
def test_parse_point():
    point = XML("""
    <Punkt>
        <Coord>
            <C1>0</C1>
            <C2>1</C2>
        </Coord>
    </Punkt>
    """)
    geometry = Geometry('foo', 'bar', 'baz', 2056)
    p = geometry._parse_point(point, 2056)
    assert isinstance(p, Point)
    assert p.x == 0.0
    assert p.y == 1.0
Ejemplo n.º 4
0
def test_parse_arc():
    geometry = Geometry('foo',
                        'bar',
                        'MULTILINESTRING',
                        2056,
                        arc_max_diff=0.1)
    coords = [(0, 0)]
    element = XML("""
    <ARC>
      <C1>2</C1>
      <C2>0</C2>
      <A1>1</A1>
      <A2>1</A2>
    </ARC>
    """)
    coords.extend(geometry._parse_arc(element, coords[-1], 2056))
    assert coords == [(0.0, 0.0), (0.293, 0.707), (1.0, 1.0), (1.707, 0.707),
                      (2.0, 0.0)]
Ejemplo n.º 5
0
def test_parse_line():
    geometry = Geometry('foo', 'bar', 'baz', 2056)
    line = geometry._parse_line(
        XML("""
        <Linie>
            <Polyline>
                <COORD>
                    <C1>0</C1>
                    <C2>0</C2>
                </COORD>
                <COORD>
                    <C1>1</C1>
                    <C2>1</C2>
                </COORD>
            </Polyline>
        </Linie>
        """), 2056)
    assert isinstance(line, LineString)
    assert list(line.coords) == [(0, 0), (1, 1)]
Ejemplo n.º 6
0
    def _parse_transfer_structure(self,
                                  session,
                                  transfer_structure,
                                  laws=False):
        """
        Parses the transfer structure content.

        Args:
            session (sqlalchemy.orm.session.Session): The SQLAlchemy session for database interaction.
            transfer_structure (lxml.etree.Element): The transfer structure element.
            laws (bool): True if the parsed file is the XML containing the federal laws.
        """

        office = Office(session, self._models.Office)
        document = Document(session, self._models.Document)
        article = Article(session, self._models.Article)
        legend_entry = LegendEntry(session, self._models.LegendEntry,
                                   self._topic_settings.get('code'))
        view_service = ViewService(session, self._models.ViewService,
                                   legend_entry)
        public_law_restriction = PublicLawRestriction(
            session, self._models.PublicLawRestriction,
            self._topic_settings.get('code'))
        geometry = Geometry(session,
                            self._models.Geometry,
                            self._topic_settings.get('geometry_type'),
                            self._srid,
                            arc_max_diff=self._arc_max_diff,
                            arc_precision=self._arc_precision)
        document_reference = DocumentReference(session,
                                               self._models.DocumentReference)
        public_law_restriction_document = PublicLawRestrictionDocument(
            session, self._models.PublicLawRestrictionDocument)
        reference_definition = ReferenceDefinition(
            session, self._models.ReferenceDefinition,
            self._topic_settings.get('code'))
        document_reference_definition = DocumentReferenceDefinition(
            session, self._models.DocumentReferenceDefinition)
        base_refinement = BaseRefinement(
            session, self._models.PublicLawRestrictionBase,
            self._models.PublicLawRestrictionRefinement)

        for element in transfer_structure:
            tag = get_tag(element)
            if tag == self.TAG_OFFICE:
                # Use the last office ID for data integration
                self._data_integration_office_id = element.attrib['TID']
                office.parse(element)
            elif tag == self.TAG_DOCUMENT:
                document.parse(element, 'Law' if laws else 'Hint')
            elif tag == self.TAG_LEGAL_PROVISION:
                document.parse(element, 'LegalProvision')
            elif tag == self.TAG_ARTICLE:
                article.parse(element)
            elif tag == self.TAG_VIEW_SERVICE:
                view_service.parse(element)
            elif tag == self.TAG_PLR:
                public_law_restriction.parse(element)
            elif tag == self.TAG_GEOMETRY:
                geometry.parse(element)
            elif tag == self.TAG_DOCUMENT_REFERENCE:
                document_reference.parse(element)
            elif tag == self.TAG_PUBLIC_LAW_RESTRICTION_DOCUMENT:
                public_law_restriction_document.parse(element)
            elif tag == self.TAG_REFERENCE_DEFINITION:
                reference_definition.parse(element)
            elif tag == self.TAG_DOCUMENT_REFERENCE_DEFINITION:
                document_reference_definition.parse(element)
            elif tag == self.TAG_BASE_REFINEMENT:
                base_refinement.parse(element)
            else:
                self._log.error('NOT IMPLEMENTED: {0}'.format(
                    get_tag(element)))
Ejemplo n.º 7
0
def test_parse_geom(element, geometry_type, instance_type):
    geometry = Geometry('foo', 'bar', geometry_type, 2056)
    geom = geometry._parse_geom(element)
    assert isinstance(to_shape(geom), instance_type)
Ejemplo n.º 8
0
def test_geometry_init():
    geometry = Geometry('foo', 'bar', 'baz', 2056)
    assert geometry._session == 'foo'
    assert geometry._model == 'bar'
    assert geometry._geometry_type == 'baz'
    assert isinstance(geometry._reprojector, Reprojector)