Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
D
django
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
django
Commits
66657eb0
Kaydet (Commit)
66657eb0
authored
Eyl 02, 2017
tarafından
Nick Pope
Kaydeden (comit)
Tim Graham
Eyl 04, 2017
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Improved messages in IndexErrors raised by GDAL objects.
üst
0d9e1163
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
34 additions
and
20 deletions
+34
-20
datasource.py
django/contrib/gis/gdal/datasource.py
+2
-2
feature.py
django/contrib/gis/gdal/feature.py
+2
-2
geometries.py
django/contrib/gis/gdal/geometries.py
+3
-3
test_ds.py
tests/gis_tests/gdal_tests/test_ds.py
+16
-8
test_geom.py
tests/gis_tests/gdal_tests/test_geom.py
+11
-5
No files found.
django/contrib/gis/gdal/datasource.py
Dosyayı görüntüle @
66657eb0
...
@@ -89,12 +89,12 @@ class DataSource(GDALBase):
...
@@ -89,12 +89,12 @@ class DataSource(GDALBase):
if
isinstance
(
index
,
str
):
if
isinstance
(
index
,
str
):
layer
=
capi
.
get_layer_by_name
(
self
.
ptr
,
force_bytes
(
index
))
layer
=
capi
.
get_layer_by_name
(
self
.
ptr
,
force_bytes
(
index
))
if
not
layer
:
if
not
layer
:
raise
IndexError
(
'
invalid OGR Layer name given: "
%
s"
'
%
index
)
raise
IndexError
(
'
Invalid OGR layer name given:
%
s.
'
%
index
)
elif
isinstance
(
index
,
int
):
elif
isinstance
(
index
,
int
):
if
0
<=
index
<
self
.
layer_count
:
if
0
<=
index
<
self
.
layer_count
:
layer
=
capi
.
get_layer
(
self
.
_ptr
,
index
)
layer
=
capi
.
get_layer
(
self
.
_ptr
,
index
)
else
:
else
:
raise
IndexError
(
'
index out of range'
)
raise
IndexError
(
'
Index out of range when accessing layers in a datasource:
%
s.'
%
index
)
else
:
else
:
raise
TypeError
(
'Invalid index type:
%
s'
%
type
(
index
))
raise
TypeError
(
'Invalid index type:
%
s'
%
type
(
index
))
return
Layer
(
layer
,
self
)
return
Layer
(
layer
,
self
)
...
...
django/contrib/gis/gdal/feature.py
Dosyayı görüntüle @
66657eb0
...
@@ -38,7 +38,7 @@ class Feature(GDALBase):
...
@@ -38,7 +38,7 @@ class Feature(GDALBase):
elif
0
<=
index
<
self
.
num_fields
:
elif
0
<=
index
<
self
.
num_fields
:
i
=
index
i
=
index
else
:
else
:
raise
IndexError
(
'
index out of range'
)
raise
IndexError
(
'
Index out of range when accessing field in a feature:
%
s.'
%
index
)
return
Field
(
self
,
i
)
return
Field
(
self
,
i
)
def
__len__
(
self
):
def
__len__
(
self
):
...
@@ -111,5 +111,5 @@ class Feature(GDALBase):
...
@@ -111,5 +111,5 @@ class Feature(GDALBase):
"Return the index of the given field name."
"Return the index of the given field name."
i
=
capi
.
get_field_index
(
self
.
ptr
,
force_bytes
(
field_name
))
i
=
capi
.
get_field_index
(
self
.
ptr
,
force_bytes
(
field_name
))
if
i
<
0
:
if
i
<
0
:
raise
IndexError
(
'
invalid OFT field name given: "
%
s"
'
%
field_name
)
raise
IndexError
(
'
Invalid OFT field name given:
%
s.
'
%
field_name
)
return
i
return
i
django/contrib/gis/gdal/geometries.py
Dosyayı görüntüle @
66657eb0
...
@@ -564,7 +564,7 @@ class LineString(OGRGeometry):
...
@@ -564,7 +564,7 @@ class LineString(OGRGeometry):
elif
dim
==
3
:
elif
dim
==
3
:
return
(
x
.
value
,
y
.
value
,
z
.
value
)
return
(
x
.
value
,
y
.
value
,
z
.
value
)
else
:
else
:
raise
IndexError
(
'
index out of range:
%
s
'
%
index
)
raise
IndexError
(
'
Index out of range when accessing points of a line string:
%
s.
'
%
index
)
def
__len__
(
self
):
def
__len__
(
self
):
"Return the number of points in the LineString."
"Return the number of points in the LineString."
...
@@ -616,7 +616,7 @@ class Polygon(OGRGeometry):
...
@@ -616,7 +616,7 @@ class Polygon(OGRGeometry):
if
0
<=
index
<
self
.
geom_count
:
if
0
<=
index
<
self
.
geom_count
:
return
OGRGeometry
(
capi
.
clone_geom
(
capi
.
get_geom_ref
(
self
.
ptr
,
index
)),
self
.
srs
)
return
OGRGeometry
(
capi
.
clone_geom
(
capi
.
get_geom_ref
(
self
.
ptr
,
index
)),
self
.
srs
)
else
:
else
:
raise
IndexError
(
'
index out of range:
%
s
'
%
index
)
raise
IndexError
(
'
Index out of range when accessing rings of a polygon:
%
s.
'
%
index
)
# Polygon Properties
# Polygon Properties
@property
@property
...
@@ -655,7 +655,7 @@ class GeometryCollection(OGRGeometry):
...
@@ -655,7 +655,7 @@ class GeometryCollection(OGRGeometry):
if
0
<=
index
<
self
.
geom_count
:
if
0
<=
index
<
self
.
geom_count
:
return
OGRGeometry
(
capi
.
clone_geom
(
capi
.
get_geom_ref
(
self
.
ptr
,
index
)),
self
.
srs
)
return
OGRGeometry
(
capi
.
clone_geom
(
capi
.
get_geom_ref
(
self
.
ptr
,
index
)),
self
.
srs
)
else
:
else
:
raise
IndexError
(
'
index out of range:
%
s
'
%
index
)
raise
IndexError
(
'
Index out of range when accessing geometry in a collection:
%
s.
'
%
index
)
def
__len__
(
self
):
def
__len__
(
self
):
"Return the number of geometries in this Geometry Collection."
"Return the number of geometries in this Geometry Collection."
...
...
tests/gis_tests/gdal_tests/test_ds.py
Dosyayı görüntüle @
66657eb0
import
os
import
os
import
re
import
re
import
unittest
from
django.contrib.gis.gdal
import
(
from
django.contrib.gis.gdal
import
(
GDAL_VERSION
,
DataSource
,
Envelope
,
GDALException
,
OGRGeometry
,
GDAL_VERSION
,
DataSource
,
Envelope
,
GDALException
,
OGRGeometry
,
)
)
from
django.contrib.gis.gdal.field
import
OFTInteger
,
OFTReal
,
OFTString
from
django.contrib.gis.gdal.field
import
OFTInteger
,
OFTReal
,
OFTString
from
django.test
import
SimpleTestCase
from
..test_data
import
TEST_DATA
,
TestDS
,
get_ds_file
from
..test_data
import
TEST_DATA
,
TestDS
,
get_ds_file
...
@@ -64,7 +64,7 @@ ds_list = (
...
@@ -64,7 +64,7 @@ ds_list = (
bad_ds
=
(
TestDS
(
'foo'
),)
bad_ds
=
(
TestDS
(
'foo'
),)
class
DataSourceTest
(
unittest
.
TestCase
):
class
DataSourceTest
(
Simple
TestCase
):
def
test01_valid_shp
(
self
):
def
test01_valid_shp
(
self
):
"Testing valid SHP Data Source files."
"Testing valid SHP Data Source files."
...
@@ -83,11 +83,12 @@ class DataSourceTest(unittest.TestCase):
...
@@ -83,11 +83,12 @@ class DataSourceTest(unittest.TestCase):
self
.
assertEqual
(
source
.
driver
,
str
(
ds
.
driver
))
self
.
assertEqual
(
source
.
driver
,
str
(
ds
.
driver
))
# Making sure indexing works
# Making sure indexing works
with
self
.
assertRaises
(
IndexError
):
msg
=
'Index out of range when accessing layers in a datasource:
%
s.'
ds
[
len
(
ds
)]
with
self
.
assertRaisesMessage
(
IndexError
,
msg
%
len
(
ds
)):
ds
.
__getitem__
(
len
(
ds
))
with
self
.
assertRaises
(
IndexError
):
with
self
.
assertRaises
Message
(
IndexError
,
'Invalid OGR layer name given: invalid.'
):
ds
[
'invalid'
]
ds
.
__getitem__
(
'invalid'
)
def
test02_invalid_shp
(
self
):
def
test02_invalid_shp
(
self
):
"Testing invalid SHP files for the Data Source."
"Testing invalid SHP files for the Data Source."
...
@@ -122,9 +123,9 @@ class DataSourceTest(unittest.TestCase):
...
@@ -122,9 +123,9 @@ class DataSourceTest(unittest.TestCase):
self
.
assertIn
(
f
,
source
.
fields
)
self
.
assertIn
(
f
,
source
.
fields
)
# Negative FIDs are not allowed.
# Negative FIDs are not allowed.
with
self
.
assertRaises
(
IndexError
):
with
self
.
assertRaises
Message
(
IndexError
,
'Negative indices are not allowed on OGR Layers.'
):
layer
.
__getitem__
(
-
1
)
layer
.
__getitem__
(
-
1
)
with
self
.
assertRaises
(
IndexError
):
with
self
.
assertRaises
Message
(
IndexError
,
'Invalid feature id: 50000.'
):
layer
.
__getitem__
(
50000
)
layer
.
__getitem__
(
50000
)
if
hasattr
(
source
,
'field_values'
):
if
hasattr
(
source
,
'field_values'
):
...
@@ -141,6 +142,13 @@ class DataSourceTest(unittest.TestCase):
...
@@ -141,6 +142,13 @@ class DataSourceTest(unittest.TestCase):
for
fld_name
,
fld_value
in
source
.
field_values
.
items
():
for
fld_name
,
fld_value
in
source
.
field_values
.
items
():
self
.
assertEqual
(
fld_value
[
i
],
feat
.
get
(
fld_name
))
self
.
assertEqual
(
fld_value
[
i
],
feat
.
get
(
fld_name
))
msg
=
'Index out of range when accessing field in a feature:
%
s.'
with
self
.
assertRaisesMessage
(
IndexError
,
msg
%
len
(
feat
)):
feat
.
__getitem__
(
len
(
feat
))
with
self
.
assertRaisesMessage
(
IndexError
,
'Invalid OFT field name given: invalid.'
):
feat
.
__getitem__
(
'invalid'
)
def
test03b_layer_slice
(
self
):
def
test03b_layer_slice
(
self
):
"Test indexing and slicing on Layers."
"Test indexing and slicing on Layers."
# Using the first data-source because the same slice
# Using the first data-source because the same slice
...
...
tests/gis_tests/gdal_tests/test_geom.py
Dosyayı görüntüle @
66657eb0
import
json
import
json
import
pickle
import
pickle
import
unittest
from
binascii
import
b2a_hex
from
binascii
import
b2a_hex
from
django.contrib.gis.gdal
import
(
from
django.contrib.gis.gdal
import
(
...
@@ -8,11 +7,12 @@ from django.contrib.gis.gdal import (
...
@@ -8,11 +7,12 @@ from django.contrib.gis.gdal import (
)
)
from
django.template
import
Context
from
django.template
import
Context
from
django.template.engine
import
Engine
from
django.template.engine
import
Engine
from
django.test
import
SimpleTestCase
from
..test_data
import
TestDataMixin
from
..test_data
import
TestDataMixin
class
OGRGeomTest
(
unittest
.
TestCase
,
TestDataMixin
):
class
OGRGeomTest
(
Simple
TestCase
,
TestDataMixin
):
"This tests the OGR Geometry."
"This tests the OGR Geometry."
def
test_geomtype
(
self
):
def
test_geomtype
(
self
):
...
@@ -158,7 +158,8 @@ class OGRGeomTest(unittest.TestCase, TestDataMixin):
...
@@ -158,7 +158,8 @@ class OGRGeomTest(unittest.TestCase, TestDataMixin):
self
.
assertEqual
(
ls
.
coords
,
linestr
.
tuple
)
self
.
assertEqual
(
ls
.
coords
,
linestr
.
tuple
)
self
.
assertEqual
(
linestr
,
OGRGeometry
(
ls
.
wkt
))
self
.
assertEqual
(
linestr
,
OGRGeometry
(
ls
.
wkt
))
self
.
assertNotEqual
(
linestr
,
prev
)
self
.
assertNotEqual
(
linestr
,
prev
)
with
self
.
assertRaises
(
IndexError
):
msg
=
'Index out of range when accessing points of a line string:
%
s.'
with
self
.
assertRaisesMessage
(
IndexError
,
msg
%
len
(
linestr
)):
linestr
.
__getitem__
(
len
(
linestr
))
linestr
.
__getitem__
(
len
(
linestr
))
prev
=
linestr
prev
=
linestr
...
@@ -183,7 +184,8 @@ class OGRGeomTest(unittest.TestCase, TestDataMixin):
...
@@ -183,7 +184,8 @@ class OGRGeomTest(unittest.TestCase, TestDataMixin):
for
ls
in
mlinestr
:
for
ls
in
mlinestr
:
self
.
assertEqual
(
2
,
ls
.
geom_type
)
self
.
assertEqual
(
2
,
ls
.
geom_type
)
self
.
assertEqual
(
'LINESTRING'
,
ls
.
geom_name
)
self
.
assertEqual
(
'LINESTRING'
,
ls
.
geom_name
)
with
self
.
assertRaises
(
IndexError
):
msg
=
'Index out of range when accessing geometry in a collection:
%
s.'
with
self
.
assertRaisesMessage
(
IndexError
,
msg
%
len
(
mlinestr
)):
mlinestr
.
__getitem__
(
len
(
mlinestr
))
mlinestr
.
__getitem__
(
len
(
mlinestr
))
def
test_linearring
(
self
):
def
test_linearring
(
self
):
...
@@ -213,6 +215,9 @@ class OGRGeomTest(unittest.TestCase, TestDataMixin):
...
@@ -213,6 +215,9 @@ class OGRGeomTest(unittest.TestCase, TestDataMixin):
self
.
assertEqual
(
'POLYGON'
,
poly
.
geom_name
)
self
.
assertEqual
(
'POLYGON'
,
poly
.
geom_name
)
self
.
assertEqual
(
p
.
n_p
,
poly
.
point_count
)
self
.
assertEqual
(
p
.
n_p
,
poly
.
point_count
)
self
.
assertEqual
(
p
.
n_i
+
1
,
len
(
poly
))
self
.
assertEqual
(
p
.
n_i
+
1
,
len
(
poly
))
msg
=
'Index out of range when accessing rings of a polygon:
%
s.'
with
self
.
assertRaisesMessage
(
IndexError
,
msg
%
len
(
poly
)):
poly
.
__getitem__
(
len
(
poly
))
# Testing area & centroid.
# Testing area & centroid.
self
.
assertAlmostEqual
(
p
.
area
,
poly
.
area
,
9
)
self
.
assertAlmostEqual
(
p
.
area
,
poly
.
area
,
9
)
...
@@ -263,7 +268,8 @@ class OGRGeomTest(unittest.TestCase, TestDataMixin):
...
@@ -263,7 +268,8 @@ class OGRGeomTest(unittest.TestCase, TestDataMixin):
if
mp
.
valid
:
if
mp
.
valid
:
self
.
assertEqual
(
mp
.
n_p
,
mpoly
.
point_count
)
self
.
assertEqual
(
mp
.
n_p
,
mpoly
.
point_count
)
self
.
assertEqual
(
mp
.
num_geom
,
len
(
mpoly
))
self
.
assertEqual
(
mp
.
num_geom
,
len
(
mpoly
))
with
self
.
assertRaises
(
IndexError
):
msg
=
'Index out of range when accessing geometry in a collection:
%
s.'
with
self
.
assertRaisesMessage
(
IndexError
,
msg
%
len
(
mpoly
)):
mpoly
.
__getitem__
(
len
(
mpoly
))
mpoly
.
__getitem__
(
len
(
mpoly
))
for
p
in
mpoly
:
for
p
in
mpoly
:
self
.
assertEqual
(
'POLYGON'
,
p
.
geom_name
)
self
.
assertEqual
(
'POLYGON'
,
p
.
geom_name
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment