thanks for your help. I tried setting dim to 4 but did't see any change.
Here is my model:
```python
from django.contrib.gis.db import models
class Kmsys(models.Model):
# Define constants ----------------------------
EPSG_CODE = 31287
NAME_OF_GEOMETRY_FIELD = "geom"
# F I E L D S -------------------------------------------------
id = models.IntegerField(primary_key=True)
geom = models.MultiLineStringField(
dim=4, srid=EPSG_CODE, blank=True, null=True, spatial_index=True
) # EPSG:31287=AustriaLambert
object_id = models.BigIntegerField(db_column="OBJECTID", unique=True)
code = models.CharField(max_length=80, db_column="KMSYS_CODE", unique=False)
name = models.CharField(max_length=500, db_column="KMSYS_BEZEICHNUNG", unique=False)
start_date = models.DateTimeField(db_column="KMSYS_START_DATUM")
end_date = models.DateTimeField(db_column="KMSYS_ENDE_DATUM")
len = models.FloatField(db_column="LEN")
km_from = models.FloatField(db_column="KMSYS_KMVON")
km_till = models.FloatField(db_column="KMSYS_KMBIS")
parts_quantity = models.IntegerField(db_column="TEILE_ANZ")
fme_date = models.DateTimeField(db_column="FME_DATUM")
se_anno_cad_data = models.FileField(db_column="SE_ANNO_CAD_DATA")
bauk_id = models.FloatField(db_column="BAUK_ID")
# Meta-Class ------------------------------------------------------
class Meta:
managed = False
db_table = "KMSYS"
# db_table = '"public"."KMSYS"'
verbose_name = "Kmsys"
verbose_name_plural = "Kmsys"
ordering = ["code"]
# Methods ---------------------------------------------------------
def __str__(self) -> str:
"""String for representing the Model object."""
return f"{self.code} | {self.name} | {self.start_date} | {self.end_date} | {self.km_from} | {self.km_till} | {self.parts_quantity} | {self.fme_date} | {self.se_anno_cad_data} | {self.bauk_id}"
```
And this is the pytest that keeps failing -> At the beginning i just tested the dim=3 manually without db-access
from django.contrib.gis.geos import GEOSGeometry, LineString, MultiLineString, Point
from rest_framework.reverse import reverse
import logging
import pytest
from kmsys.models import Kmsys
from kmsys.test.test_runner import DjangoNoCreateAndDropRunner
logger = logging.getLogger(__name__)
# use pytest marks to tell pytest-django your test needs database access! In case only a certain method needs db-access use @pytest.mark.django_db as decorator of the according test-method.
pytestmark = pytest.mark.django_db
class TestModel:
"""
Test suite for KMSYS
"""
def test_query_kmsys(self):
"""
Test whether the kmsys can be accessed.
"""
# ARRANGE -------------
# simple dimension test with GDAL
# p: OGRGeometry = OGRGeometry("Point (1 2 3 )")
# assert p.coord_dim == 3
# simple dimension test with GEOS
p: GEOSGeometry = GEOSGeometry("Point (1 2 3 )")
assert p.hasz
# simple dimension test with GEOS Multilinestring
ls1 = LineString([(0, 0, 150), (1, 1, 151)], srid="31287")
ls2 = LineString([(2, 2, 153), (3, 3, 154)], srid="31287")
mls = MultiLineString(ls1, ls2)
assert mls.hasz
# ACT -----------------
first_kmsys: Kmsys = Kmsys.objects.all().first()
logger.info(f"first: {first_kmsys}")
# ASSERT -----------------
assert first_kmsys.geom.hasz
assert len(first_kmsys.geom.coords[0][0]) == 3
assert len(Kmsys.objects.all()) == 388
regards Richard
David James Nwoyie schrieb am Samstag, 24. Februar 2024 um 21:01:56 UTC+1:
Increase the dim to 4 because of the Django of use 0 as the starting pointOn Sat, Feb 24, 2024, 8:48 PM Richard Mair <richard...@gmail.com> wrote:Hi i am usinggeom = models.MultiLineStringField(dim=3, srid=EPSG_CODE, blank=True, null=True, spatial_index=True) # EPSG:3128=AustriaLambertand my PostGIS-DB is using (MultilinestringMALTER TABLE IF EXISTS public."KMSYS"
ADD COLUMN geom geometry(MultiLineStringM,31287);but when I access my Model I only get 2 dimensional responseCan anybody lead me to the correct handling--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/ae4eaa11-3f4b-467a-9931-bbff5892a858n%40googlegroups.com.
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/85f472cb-8cee-4e32-b4c3-edec9b0324c1n%40googlegroups.com.
No comments:
Post a Comment