Fóntais allmhairithe sonraí LayermappingLink to this heading

Soláthraíonn an rang:class: LayerMapping bealach chun ábhar comhaid sonraí spásúla veicteora (m.sh. comhaid chruthach) a mhapáil i samhlacha GeoDjango.

D'fhás an fóntais seo as riachtanais phearsanta an údair chun deireadh a chur leis an athrá cód a chuaigh chun geoiméadraí agus réimsí a tharraingt as ciseal veicteora, ag tiontú go córas comhordaithe eile (m.sh. WGS84), agus ansin a chur isteach i samhail GeoDjango.

SamplaLink to this heading

  1. Teastaíonn foinse sonraí le tacaíocht ó GDAL uait, cosúil le comhaid chruthach (anseo táimid ag úsáid comhad cruth polygon simplí, test_poly.shp, le trí ghné):

Python console
>>> from django.contrib.gis.gdal import DataSource
>>> ds = DataSource("test_poly.shp")
>>> layer = ds[0]
>>> print(layer.fields)  # Exploring the fields in the layer, we only want the 'str' field.
['float', 'int', 'str']
>>> print(len(layer))  # getting the number of features in the layer (should be 3)
3
>>> print(layer.geom_type)  # Should be 'Polygon'
Polygon
>>> print(layer.srs)  # WGS84 in WKT
GEOGCS["GCS_WGS_1984",
    DATUM["WGS_1984",
        SPHEROID["WGS_1984",6378137,298.257223563]],
    PRIMEM["Greenwich",0],
    UNIT["Degree",0.017453292519943295]]
  1. Anois sainmhínímid ár samhail Django comhfhreagrach (déan cinnte go n-úsáidtear: djadmin: migrate):

    Code
    from django.contrib.gis.db import models
    
    
    class TestGeo(models.Model):
        name = models.CharField(max_length=25)  # corresponds to the 'str' field
        poly = models.PolygonField(srid=4269)  # we want our model in a different SRID
    
        def __str__(self):
            return "Name: %s" % self.name
    
  2. Úsáid: aicme: LayerMapping chun na gnéithe go léir a bhaint agus iad a chur sa bhunachar sonraí:

Python console
>>> from django.contrib.gis.utils import LayerMapping
>>> from geoapp.models import TestGeo
>>> mapping = {
...     "name": "str",  # The 'name' model field maps to the 'str' layer field.
...     "poly": "POLYGON",  # For geometry fields use OGC name.
... }  # The mapping is a dictionary
>>> lm = LayerMapping(TestGeo, "test_poly.shp", mapping)
>>> lm.save(verbose=True)  # Save the layermap, imports the data.
Saved: Name: 1
Saved: Name: 2
Saved: Name: 3

Anseo, :class: LayerMapping d'athraigh na trí ghéiméadair ón gcomhaid cruth ina gcóras tagartha spásúil bunaidh (WGS84) go dtí an córas tagartha spásúil den tsamhail GeoDjango (NAD83). Mura sainmhínítear aon chóras tagartha spásúil don chiseal, bain úsáid as an eochairfhocal source_srs le a:class: ~django.contrib.gis.gdal.spatialReference chun réad ceann a shonrú.

Sraith Maping APILink to this heading

class LayerMapping(model, data_source, mapping, layer=0, source_srs=None, encoding=None, transaction_mode='commit_on_success', transform=True, unique=True, using='default')Link to this definition

Is iad seo a leanas na hargóintí agus na heochairfhocail a d'fhéadfaí a úsáid le linn rudaí Layermapping` a chur isteach.

Argóint

Cur síos

``Samhail ``

An tsamhail gheografach, sampla.

foinse sonraí

An cosán chuig an gcomhad foinse sonraí le tacaíocht ó OGR (m.sh., comhad cruth). Glacann sé freisin le: class: django.contrib.gis.gdal.datasource cásanna.

mapaitheo

Foclóir: is teaghráin iad na heochracha a fhreagraíonn don réimse samhail, agus freagraíonn luachanna d'ainmneacha réimse teaghrán don ghné OGR, nó más réimse samhail is geografach é ansin ba chóir go bhfreagródh sé do chineál geoiméadrachta OGR, m.sh., `POINT, LINESTRING`, ``POLYGON'`.

Argóintí Eochair

sraithe

Innéacs an chiseal le húsáid ón bhFoinse Sonraí (réamhshocraithe go 0)

foinse_srs

Úsáid é seo chun an SRS foinse a shonrú de láimh (mar shampla, ní thagann comhad ``.prj ``le roinnt comhaid cruth). Glactar le teaghráin SRID, WKT nó PROJ sláimhir, agus:class: `django.contrib.gis.gdal.spatialReference rudaí.

``ionchódú ``

Sonraíonn ionchódú tacar carachtair na teaghráin i bhfoinse sonraí OGR. Mar shampla, is paraiméadair ionchódú bailí iad 'latin-1', utf-8', agus `cp437' uile.

mod_idirbhearta

D'fhéadfadh sé a bheith `commit_on_success' (réamhshocraithe) nó `'autochommit'.

`claochl

Má shocraíonn sé seo go False, díchumasfar claochlú comhordaithe Is é sin le rá, cuirfear geoiméadraí isteach sa bhunachar sonraí gan mhodhnú óna staid bhunaidh san fhoinse sonraí.

uath

Ag leagan síos é seo don ainm, nó le cúpla ainmneacha, ón tsamhail a thugtar cruthófar samhlacha atá uathúil don ainm (í) ar leith amháin. Cuirfear geoiméadraí ó gach gné isteach sa bhailiúchán a bhaineann leis an tsamhail uathúil. Cuireann iallach ar an modh idirbheart a bheith `autochommit.

`Úsáid

Socraíonn an bunachar sonraí le húsáid agus sonraí spásúla á iompórtá Is é réamhshocraithe ``'default' ``.

``save () ``Argóintí EochairfhocalLink to this heading

LayerMapping.save(verbose=False, fid_range=False, step=False, progress=False, silent=False, stream=sys.stdout, strict=False)Link to this definition

Glacann an modh `save () ``le heochairfhocail freisin. Úsáidtear na heochairfhocail seo chun logáil aschuir a rialú, láimhseáil earráidí, agus chun raonta gnéithe ar leith

Argóintí Eochairfhocal

Cur síos

raon fid

Is féidir é a shocrú le slisnacht nó tuple d'aitheantais ghné (tús, deireadh) le léarscáil ón bhfoinse sonraí. Is é sin le rá, cuireann an eochairfhocal seo ar chumas an úsáideora raon foshraith gnéithe a iompórtáil go roghnach san fhoinse sonraí geografacha.

`dul chun cinne

Nuair a shocraítear an eochairfhocal seo, clófar faisnéis stádais ag tabhairt líon na ngnéithe a phróiseáladh agus a shábháil go rathúil De réir réamhshocraithe, clófar faisnéis dul chun cinn gach 1000 gné a phróiseáiltear, áfach, féadfar an réamhshocrú seo a shárú tríd an eochairfhocal seo a shocrú le sláimhir don eatramh inmhianaithe

ciúna

De réir réamhshocraithe, clóitear fógraí earráide neamh-mharfach chuig sys.stdout`, ach féadfar an eochairfhocal seo a shocrú chun na fógraí seo a dhíchumasú.

céime

Má shocraítear é le sláimhir, tarlóidh idirbhearta ag gach eatramh céim. Mar shampla, má tharlódh sé step = 1000, tiomantas tar éis na 1,000ú gné, an 2,000ú gné srl.

sruth

Scríofar faisnéis stádais chuig an láimhseáil comhad seo. Réamhshocraithe chun sys.stdout` a úsáid, ach tacaítear le haon rud le modh scríbhneoire.

``docht ``

Scoirfidh forghníomhú na mapáil samhail ar an gcéad earráid a thagann chun cinn. Is é an t-iompar luach réamhshocraithe (False) iarracht a dhéanamh leanúint ar aghaidh.

Verbose

Má shocraítear é, clófar faisnéis ina dhiaidh sin gach samhail sábháil a fhorghníomhú ar an mbunachar sonraí.

FabhtcheartúLink to this heading

Rith as cuimhneLink to this heading

Mar a thugtar faoi deara sa rabhadh ag barr an chuid seo, stóráilíonn Django gach ceist SQL nuair a bhíonn debug = true`. Socraigh debug = false ``i do shocruithe, agus ba cheart go stopfadh seo úsáid iomarcach cuimhne agus scripteanna ``LayerMapping á reáchtáil.

MySQL: earráid max_allowed_packetLink to this heading

Má thagann tú ar an earráid seo a leanas agus tú ag úsáid LayerMapping agus MySQL:

Pytb
OperationalError: (1153, "Got a packet bigger than 'max_allowed_packet' bytes")

Ansin is é an réiteach luach an socrú max_allowed_packet a mhéadú i do chumraíocht MySQL. Mar shampla, d'fhéadfadh go mbeadh an luach réamhshocraithe rud íseal cosúil le meigabyte amháin - féadfar an socrú a mhodhnú i gcomhad cumraíochta MySQL (my.cnf `) sa chuid`` [mysqld] ``:

Ini
max_allowed_packet = 10M