Daha çox

Python istifadə edərək QGIS-də bir sahə üçün unikal ID dəyərinin hesablanması


Python istifadə edərək qgis-də bir vektor təbəqəsi üçün unikal bir ID sahəsi hesablamağa çalışıram. Atribut dəyərlərini hesablamaq üçün bir neçə kod tapdım və ifadədəki dəyəri artırmağa çalışdım, amma işə yaramadı - bütün xüsusiyyət dəyərlərini 0 kimi hesablayır. İfadə üçün təyin etdiyim intial dəyərin nə olduğunu təxmin edirəm hər dəfə oxumaq - döngü içərisində onu dəyişdirmək görünmür. Hər kəsin fikri var? Budur kodum:

dsslvExplodeLyr in f QgsMapLayerRegistry.instance (). addMapLayer (dsslvExplodeLyr) idx = dsslvExplodeLyr.fieldNameIndex (UniqueID) Eval = '0' e = QgsExpression (Eval) e.prepare (dsslvExplodeLyr.pendingFields ()) dsslvExplodeLyr.startEditing () .getFeatures (): num = int (eVal) num = num + 1 eVal = str (num) f [idx] = e.evaluate (f) dsslvExplodeLyr.updateFeature (f) dsslvExplodeLyr.commitChanges ()

Bu sahə kalkulyatoru gui-də işləyən ifadə üçün '$ rownum' cəhd etdiyimi də qeyd etməliyəm, ancaq 0 dəyərini verir.


Bunun str (num) və int (eVal) ilə necə işləyəcəyindən əmin deyiləm, mənə elə gəlir ki, hər təkrar üzərində dəyərlər yazılır. Bu şəkildə sınayın:

QgsMapLayerRegistry.instance (). AddMapLayer (dsslvExplodeLyr) idx = dsslvExplodeLyr.fieldNameIndex ('UniqueID') eVal = '0' num = 0 e = QgsExpression (eVal) # harada gəlir? ' dsslvExplodeLyr.getFeatures (): eVal = str (num) # sahəsini götürdüyüm üçün başqa istifadə (açıqlanmamış) e.prepare (dsslvExplodeLyr.pendingFields ()) dsslvExplodeLyr.startEditing () ola biləcəyi üçün buraya buraxın 'UniqueID' sətirdir, elə deyilmi? f.setAttribute (idx, eVal) # sahə üçün dəyəri təyin edir, aslo sahə adı ilə işləyir dsslvExplodeLyr.updateFeature (f) num + = 1 # post iterate, buna görə birincisi 0, ikincisi 1 və s. dsslvExplodeLyr.commitChanges ()

Bu kod yaxşı işləyir (fillFields funksiyası) və başlanğıc redaktə əməliyyatının aparılması tələb olunmur.

def fillFields (list, idx): i = 0 siyahıdakı maddə üçün: new_values ​​= {idx: item} provider.changeAttributeValues ​​({i: new_values}) i + = 1 from PyQt4.QtCore import * dsslvExplodeLyr = iface.activeLayer () provider = dsslvExplodeLyr.dataProvider () idx = dsslvExplodeLyr.fieldNameIndex ('UniqueID') n = dsslvExplodeLyr.featureCount () #count features field1 = range (n) #create list with n value fillFields (field1, 'UniqueID' indeksli sahədə

Qat adı (dsslvExplodeLyr; nöqtə vektor təbəqəsi) və sahə adı üçün nomenklaturanızı istifadə etdim (Unikal ID). Ssenari bu sahəyə -10 ilə 10 arasındakı səsvermə dəyərlərini 0-24 arasındakı tam ədədi dəyişdirdi.

Kodu Python Konsolunda çalıştırmadan əvvəl:

Kodu işlədikdən sonra


Pythondakı id funksiyasından xəbərdarsınız və əks fikir əvəzinə istifadə edə bilərsinizmi?

Python 3-də ən yüksək səs verilən cavabı sınamaq .next () silindiyi üçün bir səhvlə üzləşəcəksiniz.

Bunun əvəzinə aşağıdakıları edə bilərsiniz:

Əvvəlcə Dərslər üçün Böyük Adlardan istifadə edin. atributlar üçün kiçik adlar.

Itertools-dan sayını istifadə etmək bunun üçün əladır:

Daha sonra dəyərlərin necə yaradıldığını dəyişdirməyiniz lazımdırsa, eyni interfeys işləyir, sadəcə id_generator tərifini dəyişirsiniz.

Sayını bir sinif parametri olaraq sinifə əlavə edə bilərsiniz, sonra da bu dəyəri bir nümunə parametrinə kopyalaya bilərsiniz.

Bu say bir sinif paramını və id bir nümunə paramını edir. Tamsayılar pythonda dəyişməz olduğu üçün işləyir, buna görə cari dəyər atributun özü deyil, kopyalanır.

Ids bəzən istinad etmək istədiyiniz obyektin bəzi sahələrini istifadə etməkdən faydalanır. Bu köhnə bir stil verilənlər bazası texnikadır.

məsələn, daxil olan müştəri telefon danışıqları üçün qeyd aparan bir tətbiqiniz varsa, zamanla yaradılan bir id istifadə edin = başqa bir şey

serverdə yaradılmadığı təqdirdə yalnız time.time () və time.clock () fərdi kompüter qaytarma dəyəridir. Əgər serverdə olsanız, server saatınızın hər zaman olduğu kimi düz olduğundan əmin olun.

İd () üzərində başqa bir qeyd və bu barədə başqasının cavabını yenidən düşünmək. id (), (id ()) etmədiyi bir obyekt silinsə də, qaytarılmış hər bir id xatırlayarsa, unikal bir rəqəm qaytara bilər. Buna görə də.

Başqalarının id () unikal bir ədədi qaytarmayacağını söylədiklərini dəstəkləmək üçün doğrudur ki, bu id () dəyərlərini obyektlərə istinad kimi saxladığınız təqdirdə unikal bir dəyər verə bilməz və silmək üçün id () s aldığınız obyektlərin nümunələri. AMMA ! id () -ni istinad kimi istifadə etmək, əsasən başqa bir obyektlə bir şəkildə əlaqəli açarı olan bir obyektin olması deməkdir.

Bu id () unikallığı ilə etibarsız deyil. Yalnız yeni bir obyekt əlavə etmənin əvvəlcədən mövcud bir id () əvvəllər obyektin başqa bir nümunəsinə istinad olaraq saxlanılmış olub olmadığını yoxlamadığınız təqdirdə etibarsızdır.

AMMA storeit [4357891223], object3 olmayan bəzi digər obyekt nümunələrini qaytarır, bu səbəbdən & lt link> qüvvədə qalır, lakin unikallıq uğursuz olur.


Bəli, bu sahələr NULL dəyərinə sahib ola bilər, lakin məqsədə xidmət etmir.

Xarici ID: Bu, ümumiyyətlə başqa (xarici) sistemdən bir kimliyə istinad edən bir sahədir. Məsələn, müştərinin salesforce.com ilə əlaqələndirəcəkləri bir Oracle Financials sistemi varsa, satış qüvvələri içərisindən hesab qeydlərinin Oracle ID-yə müraciət etmələri daha asan ola bilər. Beləliklə salesforce.com-da xarici bir kimlik yaradacaq və Oracle ID-ni hər hesab üçün həmin sahəyə yükləyəcəklər. Bundan sonra salesforce.com id-nə deyil, həmin şəxsiyyət sahəsinə müraciət edə bilərlər.

Əlavə olaraq, xarici bir şəxsiyyət sahəniz varsa, sahə kenar çubuğu axtarışında axtarılır. Ayrıca qeydlərə müraciət etmək üçün xarici ID ilə yüksəltmə API çağırışından istifadə edə bilərsiniz.

Eyni xarici identifikatorla birdən çox qeydə sahib ola bilərsiniz (baxmayaraq ki, xarici id-in məqsədini pozacağı üçün tövsiyə edilmir)

Unikal şəxsiyyət sahəsi

Bu, bənzərsiz sahə üçün birdən çox qeyddə eyni dəyəri istifadə etməyinizə mane olacaq sahə üçün bir ayardır. Beləliklə, 5 simvollu bir mətn sahəsi yaratsam və onu unikal hala gətirsəm və "12345" dəyərində bir qeyd yaratsam, unikal sahədə eyni dəyərlə başqa bir qeyd yarada bilməyəcəyəm. Bunu etməyə çalışsam, dəyərin artıq istifadə olunduğunu söyləyən bir səhv alacağam.

Çox vaxt Xarici İD-lər unikal xüsusiyyətlə təyin olunur ki, identifikatorlar hər qeyd üçün unikal olsun.


  • uuid_generate_v1 ()
    Mövcud kompüterin + cari anın MAC ünvanı var. Çox istifadə olunur, ancaq verilənlər bazası serverinizin MAC-sini və ya bu dəyərin yaradıldığı vaxtı açıqlamaqda həssas olduğunuzdan çəkinin. Versiya 1 UUID kimi spesifikasiya ilə müəyyən edilmişdir.
  • uuid_generate_v1mc ()
    Versiya 1 kimi, lakin real MAC ünvanı əvəzinə təsadüfi bir çox yayımlı MAC ünvanı ilə. Görünən budur ki, Versiya 1-i istifadə etmək üçün bir yol, ancaq bu faktı açıqlamağa həssas olsanız verilənlər bazası serverinizin faktiki MAC-sının əvəzinə başqa bir MAC əvəz etmək.
    Bir ‘təsadüfi çox yayımlı MAC’ nədir? Dəqiq bilmirəm. RFC 4122-in 4.1.6-cı hissəsini oxuduqdan sonra bunun MAC-ın yerinə istifadə olunan təsadüfi bir rəqəm olduğuna şübhə edirəm, lakin versiya 1-in bu dəyişməsini adi ilə bir-birindən fərqləndirmək üçün adi unicast əvəzinə çox yayımlı bir MAC ünvanını göstərmək üçün bitlərlə real-MAC Version 1 UUID.
  • uuid_generate_v3 (ad sahəsi uuid, ad mətni)
    Təqdim etdiyiniz bir MD5hash mətni ehtiva edir. Versiya 3 UUID, ad sahəsi əsaslı UUID olaraq spesifikasiya ilə müəyyən edilmişdir.
  • uuid_generate_v4 ()
    128 bitdən 121-122-si üçün təsadüfi olaraq yaradılan məlumatlara əsaslanır. Altı və ya yeddi bit Versiya & amp; Variantı göstərmək üçün istifadə olunur. Bu tip UUID yalnız kriptoqrafik cəhətdən güclü təsadüfi generatorla tətbiq olunduqda praktikdir. Versiya 4 UUID kimi spesifikasiya ilə müəyyən edilmişdir.
  • uuid_generate_v5 (ad sahəsi uuid, ad mətni)
    Version 3 ilə eyni, lakin SHA1 hashing istifadə edir. Versiya 5 UUID kimi spesifikasiya ilə müəyyən edilmişdir.
  • uuid_nil ()
    Xüsusi bir vəziyyət, bütün bitlər sıfıra bərabərdir 00000000-0000-0000-0000-000000000000. Naməlum UUID dəyəri üçün bayraq kimi istifadə olunur. Sıfır UUID olaraq bilinir.

Növləri müqayisə etmək üçün Suala baxın, Hansı UUID versiyasını istifadə edəcəksiniz?

Yalnız Version 4 (təsadüfi olaraq yaradılan) ilə maraqlanırsınızsa və artıq istifadə edirsinizsə pgcrypto, bpieck-in Cavabına baxın.

Versiyalar 3 & amp 5 ilə maraqlanırsınızsa, v5 UUID yaradan bu Suala baxın. Ad və ad sahəsi nədir?

Daha çox müzakirə üçün oxşar suala cavabım və bloqdakı yazıma baxın JDBC-dən Postgres-ə UUID dəyərləri.


SQL SEÇİLMƏSİNDƏN DƏQİQ: Fərqli Dəyərlərin axtarışı

Sorğularınızın nəticələrindəki təkrarlanan nəticələri ortadan qaldırarkən, sahələrdən məlumat almaq istədiyiniz hallar ola bilər. SELECT DISTINCT ifadəsi cədvəllərdən unikal sahə məlumatlarını almaq üçün xüsusi sütunlar kimi şərtlərlə birlikdə istifadə edilə bilər. Sahələrdən bənzərsiz dəyərlər istəməyin bir çox fərqli səbəbi var. SEÇİN DİSTİNK bəyanatı təhlil və hesabat vermə ilə məşğul olanlar kimi tapşırıqlarla çox faydalı ola bilər.

SELECT DISTINCT ifadəsinin əsas sintaksisi aşağıdakı kimidir:

Column & gt. Kimi DISTINCT & ltcondition seçin

SEÇMƏN UNİKAL və SEÇİN DISTINCT arasındakı fərq

BENZƏRSİZ SEÇİN: demək olar ki, bu açıqlama ilə “açıq şəkildə” fərqli bir şey var (cəza nəzərdə tutulur). Sorğuların mahiyyətcə eyni funksiyanı yerinə yetirdiyindən SEÇMƏSİZ BÖYÜK və SEÇİN DISTINCT sinonim olsa da, DISTINCT standart bir SQL açar sözünə çevrilmişdir. UNİKAL və DISTINCT qorunan Oracle açar sözləridir. Tövsiyə, UNİQUE açar sözdən daha çox dəstəyə sahib olduğu üçün DISTINCT açar sözündən istifadə etməkdir.

SELECT DISTINCT istifadə

Əlaqəli konsepsiyaların bəzi nümayişləri ilə hərəkətdə olan faydalı DISTINCT bəndinə baxmağın vaxtı.

İlk nümunədə, şagirdlərin bu semestrə daxil olduqları dərsləri izləmək üçün istifadə olunan bir cədvəl var. Məktəb, şagirdlərin bu semestrdə hansı siniflərdə istifadə olunduğunu görmək istədikləri üçün daxil olduqları unikal siniflərin siyahısını istəyir.

Tələbə sinif qeyd cədvəli: tələbə şəxsiyyət nömrəsi və sinif adı

Sütunlar: STUDENT_ID, STUDENT_CLASS

STUDENT_ID STUDENT_CLASS
04521 Oracle 101
04522 SQL-ə giriş
04523 SQL-ə giriş
04524 Verilənlər bazası idarəetməsi
04525 Hesabat Nəsli
04526 Verilənlər bazası idarəetməsi
04527 Verilənlər bazası idarəetməsi
04528 Verilənlər bazası idarəetməsi
04529 Oracle 101
04530 Verilənlər bazası idarəetməsi
04531 SQL-ə giriş
04532 Verilənlər bazası idarəetməsi
04533 Verilənlər bazası idarəetməsi

Görürsən ki, “Verilənlər Bazası İdarəetməsi” bu semestrdə populyar bir sinifdir, lakin məktəb hazırda hansı sinifin ən populyar olduğunu görmək istəmir. Məktəb, bu semestrdə hansı dərslərin keçirildiyini görmək üçün müraciət edir və biz onların tələblərini yerinə yetirmək üçün SELECT DISTINCT istifadə edəcəyik. SEÇİN DİSTİNQ, STUDENT_CLASS sütunu və qeydlər cədvəli ilə birlikdə istifadə ediləcək.

DISTINCT STUDENT_CLASS SEÇİN

STUDENT_CLASS
Oracle 101
SQL-ə giriş
Verilənlər bazası idarəetməsi
Hesabat Nəsli

İndi bu semestrdə keçirilən müxtəlif siniflərin siyahısını görə bilərsiniz.

İkinci nümunə, jurnal nəşri üçün istifadə olunan bir cədvəldir. Nəşr şirkəti abunəçilərinin yaşadıqları fərqli sitatların siyahısını görmək istəyir, abunəçi profilləri üçün istifadə olunan cədvəl və abunəçi profilləri ilə əlaqəli unikal şəhərləri əldə etmək üçün şəhər sütunu ilə birlikdə SEÇİN DİSTİNK bəyanatından istifadə edilə bilər. Jurnal nəşrinin vəziyyətində, bir SEÇİM ifadəsi DISTINCT maddəsi olmadan istifadə olunarsa, abunəçilərinin hansı şəhərlərdə yaşadıqlarını və çıxışı nisbətən qarmaqarışıq olmasını müəyyənləşdirməklə o qədər də səmərəli olmayacaq şəhərlərin təkrarlanan hallarını özündə cəmləşdirərdilər.

Abunəçi yeri cədvəlinin məzmunu: müştəri şəxsiyyət nömrəsi, müştəri şəhəri və müştəri vəziyyəti

Sütunlar: CUST_ID, CUST_CITY və CUST_STATE

CUST_ID CUST_CITY CUST_STATE
101 Floyd New York
202 Raleigh Şimali Karolina
303 Floyd Virginia
404 Louisville Kentukki
505 Wilmington Şimali Karolina
606 Wilmington Şimali Karolina

Gördüyünüz kimi, Floyd şəhəri üçün birdən çox giriş və Wilmington şəhəri üçün birdən çox giriş var.

CUST_CITY sütunundan unikal dəyərləri seçmək üçün aşağıdakılardan istifadə edə bilərsiniz:

DESTINCT CUST_CITY SEÇİN

CUST_CITY
Floyd
Raleigh
Louisville
Wilmington

Çıxışdan təkrarlanan dəyərlər silindi. “Gözləyin ……. Fərqli dövlətlər üçün yerlər cədvəlində Floyd adlı şəhərlərinin olduğu qeydləri var idi” deyə ifadə etmək olar. Bu vəziyyətdə sorğumuz bir az daha incə hala gəlməlidir.

Unikal dəyərləri taparkən birdən çox sütunun daxil edilməli olduğu hallar üçün DISTINCT açar sözü cədvəl və sütunların birləşməsi ilə birlikdə istifadə edilə bilər. Bizim nümunəmizdə CUST_CITY və CUST_STATE sütunlarını birləşdirmək uyğun olardı.

CUST_CITY, CUST_STATE DISTINCT SEÇİN

CUST_CITY CUST_STATE
Floyd New York
Raleigh Şimali Karolina
Floyd Virginia
Louisville Kentukki
Wilmington Şimali Karolina

İndi şəhər-əyalət birləşmələrinin hamısı unikal olduğu üçün unikal yerlərin göstərildiyini görürsünüz.

Daha sonra SİFARİŞ BY bəndindən istifadə edərək çıxışı nizamlı şəkildə göstərə bilərsiniz. Qeyd edək ki, SEÇİN DISTINCT sorğusunda sütunların birləşməsi istifadə olunursa, eyni sütun birləşmələri də SİFARİŞ BY müddəası ilə istifadə olunmalıdır.

CUST_CITY, CUST_STATE DISTINCT SEÇİN

CUST_CITY, CUST_STATE SƏFƏRİ

CUST_CITY CUST_STATE
Floyd New York
Floyd Virginia
Louisville Kentukki
Raleigh Şimali Karolina
Wilmington Şimali Karolina

Üçüncü nümunədə, bir imla yarışması keçirmiş bir təşkilat üçün bir masanız var. Təşkilat hansı sözlərin səhv yazıldığını görməsini xahiş edir.

Yarış cədvəlinin məzmunu: iştirakçı nömrəsi və səhv yazılmış sözlər.

Sütunlar: CONTESTANT_NUM və CONTESTANT_WORD

CONTESTANT_NUM CONTESTANT_WORD
01 şübhəsiz
02 testlər
03 yox olmaq
04 izahat
05 yox olmaq
06 manevr
07 tələffüz
08 əzmkarlıq
09 izahat
10 birincilik

Gördüyünüz kimi, bəzi sözlərin səhv yazılması halları yarışmacılarla meydana gəldi.

DISTINCT CONTESTANT_WORD SEÇİN

CONTESTANT_WORD
şübhəsiz
testlər
yox olmaq
izahat
manevr
tələffüz
əzmkarlıq
izahat
birincilik

Bu vəziyyətdə, sorğunun təkcə unikal dəyərləri tapmaqda deyil, sorğunuzun verilənlər bazasına səhv daxil edilmiş bir söz tapmaqda da kömək etdiyini görürsünüz. “İzahat” ın yanında “izahat” ın da göründüyünü görə bilərik. Məlumat düzəldilə bilər və sonra aşağıdakı nəticəni əks etdirən sorğunu yerinə yetirə bilərsiniz:

CONTESTANT_WORD
şübhəsiz
testlər
yox olmaq
izahat
manevr
tələffüz
əzmkarlıq
birincilik

Nəticələrimizi sifariş edilmiş bir formatda göstərmək üçün SİFARİŞ BY istifadə edə bilərik:

DISTINCT CONTESTANT_WORD SEÇİN

CONTESTANT_WORD
yox olmaq
izahat
manevr
əzmkarlıq
birincilik
tələffüz
testlər
şübhəsiz

SELECT DISTINCT hesabatlardan verilənlər bazası girişindəki səhvlərin müəyyənləşdirilməsinə qədər dəyişə biləcək bir sıra tapşırıqlarda kömək edə biləcək sahələrdən unikal dəyərləri alır. SQL hesabat xidmətlərini araşdırmağa hazırsınız?

SELECT DISTINCT tələb olunan məlumatların alınmasına kömək etməklə yanaşı, nəticənin oxunması daha asan şəkildə göstərilməsinə də kömək edə bilər.


Dəstək və lisenziyalaşdırma

Petra Onlayn İstifadəçi Birliyi

Bir IHS Petra ® istifadəçisi olduğunuzda, yalnız bir proqramdan daha çox şey əldə edə bilərsiniz. Petra Online İstifadəçi Topluluğumuzla həm mütəxəssislərinizdən həm də həmyaşıdlarınızdan dəstək almaq üçün bir pəncərə portalına giriş əldə etmisiniz. Onlayn İstifadəçi Cəmiyyətinin nəyi təklif etdiyinə baxın.

Şirkətinizin maliyyə hədəfləri üçün ən yaxşı variantı seçin.

  • Abunələr qısa müddətli nağd pul axını məhdudiyyətlərini və kapital büdcəsi məhdudiyyətlərini idarə etməyə kömək edir
  • Daimi Lisenziyalaşdırma ümumi mülkiyyət xərclərini maksimum dərəcədə artırmağa kömək edir
  • Bağımsız daha geniş bir komanda ilə əməkdaşlıq etməyiniz lazım olmadıqda və ya məsləhətçi olduğunuzda
  • Şəbəkə aktiv qrupları arasında əməkdaşlıq etməsi lazım olan şirkətlər üçün
  • Qisa müddətli abunə bir ay və ya daha uzun müddət istifadə üçün
  • Lisenziya ticarəti - Kingdom EarthPAK-a keçməyə hazırsınız, bu gün Petra lisenziyanızla ticarət edə bilərsiniz

Məkan korrelogramı

Konsepsiya

Parametrik olmayan bir məkan korrelogramı, məkan ağırlığı matrisinin spesifikasiyasına etibar etməyən qlobal məkan avtokorrelyasiyasının alternativ ölçüsüdür. Bunun əvəzinə, yerli bir regresiya, aralarındakı məsafənin bir funksiyası olaraq bütün müşahidələr cütləri üçün hesablanan kovaryanslara və ya korrelyasiyalara uyğundur (məsələn, Bjornstad və Falck 2001-də göstərildiyi kimi). 7

Standartlaşdırılmış dəyişənlərlə (z ), bu lokal regresiyaya qədər qaynar: [z_i.z_j = f (d_) + u, ] harada (d_) bir cüt yer arasındakı məsafə (i-j ), u bir səhv müddətidir və (f ) məlumatdan təyin ediləcək parametrik olmayan bir funksiyadır. Tipik olaraq, sonuncusu DÜŞÜK və ya nüvə regresiyasıdır.

GeoDa, bir məkan korrelogramını tətbiq edir, yəni hesablama standart məhsulların əlaqələrə uyğun olması üçün standartlaşdırılmış dəyişənlərə əsaslanır. Qeyri-xətti əyri, məsafə zibilindəki bütün müşahidələr cütü üçün orta korrelyasiyaya uyğun bir DÜŞÜK reqressiyadır. Bu, geostatistikanın empirik variogramının altında yatan oxşar bir məntiqdən istifadə edir, lakin zibil təxminlərinə qeyri-xətti hamar tətbiq olunur.

Məkan korrelogramının yaradılması

Mekansal korrelogram funksionallığı alətlər çubuğundakı müvafiq işarəni (Şəkil 21-də olduğu kimi məkan təhlil qrupundakı orta nişanı) tıklayaraq çağırılır. Məkan korrelogramı, və ya seçərək menyudan Space & gt Mekansal Korrelogram (seçimlər siyahısının ən altındakı maddə).

Şəkil 21: Parametrik olmayan korrelogram nişanı

Bu, Şəkil 22-də göstərildiyi kimi, standart parametr parametrləri ilə bir dialoq və arxa planda bir qrafik gətirir. Bu qrafik bu nöqtədə məlumat vermir, çünki ilk dəyişən üçün bir korrelogram göstərir. unikal_id.

Əvvəlcə dialoqdakı uyğun parametrləri seçməliyik.

Şəkil 22: İlkin korrelogram dialoqu

Dialoqun yuxarı hissəsindəki elementlər Dəyişən (açılan siyahıda mövcuddur), Məsafə metrik (standartdır) Öklid, lakin Arc məsafəsi də mövcuddur) və Zibil qutularının sayı.

Parametrik olmayan korrelogram, hər məsafə zibilinə düşən cüt cütlü korrelyasiyalarda lokal reqressiya yolu ilə hesablanır. Zibil qutularının sayı hər zibilin məsafə aralığını təyin edir. Bu aralık, qutuların sayına bölünən maksimum məsafəsidir. Daha çox qutu seçildikdə, korrelogram daha incə dənəli olacaqdır. Bununla birlikdə, bu da potensial olaraq bəzi zibil qutularında çox az cütə səbəb ola bilər (əsas qayda ən azı 30 olmalıdır).

Hər zibil qutusundakı elementlərin sayı, qutuların sayı ilə maksimum məsafə arasındakı qarşılıqlı əlaqənin nəticəsidir. Varsayılan olaraq, bütün cütlər istifadə olunur (nümunəmizdə, 205 müşahidələrlə bu nəticə verir: ([205 ^ 2 - 205] / 2 = 20910 ) cütlər) və beləliklə bütün cüt məsafələr nəzərə alınır. Lakin praktikada bir çox halda bu yaxşı bir seçim olmaya bilər. Məsələn, bir çox müşahidələr olduqda, cütlərin sayı tez bir zamanda qeyri-ciddi olur və GeoDa-nın yaddaşı tükənəcəkdir. Ayrıca, bir-birindən uzaq olan cütlər üçün hesablanan korrelyasiyalar o qədər də mənalı deyil (Tobler qanununa görə sıfır olmalıdır). Dialoqun alt yarısı bu seçimləri dəqiq tənzimləmək üçün seçimlər təqdim edir.

Əvvəlcə, bütün cütlərdən istifadə edən və maksimum məsafə baxımından heç bir məhdudiyyət qoymayan, varsayılanı nəzərdən keçiririk. Zibil qutularının sayı təyin edilmişdir 10. Əvvəlki kimi Dəyişən təhlil edirik satış qiyməti. Bu seçimlər Şəkil 23-də informasiya qutusunda göstərilir.

Şəkil 23: Korrelogram üçün dəyişən parametr

Düyməsini basaraq Müraciət edin düymə Şəkil 24-də göstərilən məkan korrelogramını verir. Pəncərənin ölçüsündə kiçik düzəlişlər üfüqi oxdakı bütün detalları görmək üçün lazım ola bilər, xüsusən də məsafələr ayaqlarla ifadə olunduğundan (çox sayda olduqları üçün).

Şəkil 24: Varsayılan məkan korreloqramması

Təfsir

Şəkil 24-dəki qrafikin yuxarı hissəsində məkan avtokorrelyasiyasının məsafəyə görə necə dəyişdiyini əks etdirən həqiqi korrelogramdır. İşarəni hər mavi nöqtənin üzərinə apararaq vəziyyət çubuğundakı məsafə zolağı ilə əlaqəli məkan avtokorrelyasiyası verir. Bizim nümunəmizdə, ilk nöqtə 0 ilə 4823 fut (və ya təxminən 0.9 mil) arasındakı məsafələr üçün 0.202048-ə cavab verir.

Korrelogramla kəsikli sıfır ox arasındakı kəsişmə (məkan avtokorrelyasiya aralığını təyin edən) ikinci aralığın orta nöqtəsində (4823 - 9647 fut), yəni 7235 və ya təxminən 1,4 mil ətrafında baş verir. Bu aralığın xaricində avtokorrelyasiya əvvəlcə mənfi olur və sonra sıfır xətt ətrafında dəyişir.

Qrafın altındakı hər zibil qutusundakı müşahidə cütlüyünün sayını göstərən bir histoqram var. İşarəni müəyyən bir zibil qutusunun üstünə gətirmək vəziyyət sətirindəki zibil qutusunda neçə cütün olduğunu göstərir. Bizim nümunəmizdə, hər bir zibilin kifayət qədər müşahidə cütlüyündən daha çox olduğu aydın görünür. Kiçik görünən sonuncu qutu da (şaquli miqyasın bir funksiyası) hesablama üçün 75 cüt istifadə edir.

Seçərkən daha ətraflı məlumat verilir Statistikaları göstərin seçim (qrafikə sağ vurun). Şəkil 25-də göstərildiyi kimi, hər zibil üçün hesablanmış avtokorrelyasiya, habelə zibil üçün məsafə aralığı (alt və yuxarı sərhəd) və statistikanı hesablamaq üçün istifadə olunan cütlərin sayı təmin edilmişdir.

Əlavə olaraq, minimum və maksimum məsafəni, cütlərin ümumi sayını və aralıq üçün bir təxmini (yəni təxmin edilən avtokorrelyasiyanın əvvəlcə sıfır olduğu məsafə) bir xülasə var. Bizim nümunəmizdə sonuncunun təqribən 7225 fut (1,4 mil) olduğu təxmin edilir. Aralıq üçün dəyər siyahısından dərhal sonra korrelogramın oxu keçdiyi zibil qutusunun alt və yuxarı sərhədi verilmişdir (bu, alternativin, lakin aralığın daha az dəqiqləşdirilməsini təmin edir).

Şəkil 25: Statistik məlumatlarla məkan korrelogramı

Mekansal korrelogram seçimləri

GeoDa-da, iki məkan korrelogramı seçimi var. Biri ibarətdir parametrlər Model 23, Şəkil 23-də göstərilən informasiya qutusunda göstərildiyi kimi. Digər seçimlər qrafiki sağ vuraraq adi qaydada çağırılır. Artıq Statistikaları göstərin yuxarıdakı seçim. Seçimlərin tam siyahısı Şəkil 26-da göstərilmişdir.

Şəkil 26: Mekansal korrelogram seçimləri

Maraqlı bir seçimdir Nəticələri saxla. Bu, bir mətn sənədindəki korrelogramın təsviri statistikasının bir qeydini təmin edir (csv fayl uzantısı ilə). Fayl, zamanın altındakı qrafikin altındakı məlumatları ehtiva edir Statistikaları göstərin seçilib. Buraya məkan avtokorrelyasiyasının təxminləri, qutu aralıkları, zibil qutularındakı müşahidələrin sayı və xülasə maddələri daxildir.

DÜŞÜK parametrlər

Şəkil 26-da vurğulanmış seçim seçiminə aiddir DÜŞÜK Parametrləryəni hər hansı bir DÜŞÜK hamar üçün təyin edilə bilən bant genişliyi və digər texniki seçimlər. Varsayılan, əksər hallarda yaxşı işləyən 0,20 bant genişliyindən istifadə etməkdir. Həmişə olduğu kimi, daha böyük bir bant genişliyi (bir qədər) hamar bir əyri, daha kiçik bir bant isə əksinə verəcəkdir. Bu, standart DÜŞÜK qeyri-xətti hamar üçün olduğu kimi eyni şəkildə işləyir.

Məsafə parametrləri

Əksər hallarda, məsafə cütlərinin standart istifadəsi çox böyükdür. Bundan əlavə, maksimum məsafəni məhdudlaşdırmaq üçün yaxşı bir səbəb var, çünki böyük (r) məsafələrdəki korrelyasiyalar həm daha seyrəkdir (zibil qutusundakı daha az cüt, bu da daha az dəqiq təxminlərə səbəb olur) və sıfıra yaxın olduğu güman edilir (Tobler qanunu).

Maksimum məsafəni təyin etmək üçün bir neçə qayda var. GeoDa çıxış nöqtəsi olaraq maksimum məsafənin yarısından istifadə edir. Yanındakı qutunu qeyd etməklə Maksimum məsafə və sürgü çubuğunun ortasındakı düyməni vuraraq, maksimum məsafənin yarısı (24131.4) Şəkil 27-də göstərilən qutuda verilmişdir. Bu, əlaqələri hesablamaq üçün istifadə olunan cütlərin sayını 20910-dan təxminən 10557-ə qədər yarıya endirir. 8

Şəkil 27: Maksimum məsafənin tənzimlənməsi

Şəkil 28-dəki müvafiq korrelogram daha qısa məsafə aralığında avtokorrelyasiya modelini vurğulayır. Korrelyasiya üçün ilkin nəticə ilə təxminən eyni, təxminən 7,244 fut (7,225 ilə müqayisədə) eyni olan bir sıra təklif edir. Vəziyyət çubuğu, göstəricinin keçdiyi nöqtə ilə verilən avtokorrelyasiyanı siyahıya alır (nümunəmizdə, dördüncü qutu üçün təxminən -0.056).

Şəkil 28: Yarım maksimum məsafəli korrelogram

Aralığın daha dəqiq ölçülməsi üçün bu dəyəri zibil qutusuna yazaraq maksimum məsafəni 20000 fut (3,8 mil) olaraq təyin edə bilərik və 20 qutu seçək (çoxlu müşahidələr var, buna görə də heç bir təhlükə yoxdur) hər hansı bir zibil qutusunda 30 cütdən az olması).

Şəkil 29-da göstərilən ortaya çıxan korrelogramın hər qutusu 1000 fut (təxminən 0,2 mil) məsafəyə malikdir. Bu, məkan avtokorrelyasiya aralığının daha incə ölçülü ölçüsünü təmin edir (üfüqi oxdakı bütün dəyərləri və göstərilən statistikanı aydın şəkildə görmək üçün pəncərənin bir qədər genişləndirilməsi tələb oluna bilər).

Korrelogram və sıfır ox arasındakı kəsişmə demək olar ki, 6000-7000 fut aralığın ortasında, təxminən 6775 fut (və ya 1,3 mil) məsafədədir. Xülasə olaraq, korrelogram parametrlərini varsayılandan daha kiçik bir dəyərə dəyişdirərək və qutuların sayını artıraraq, məkan qarşılıqlı təsir dairəmizin təxminləri təxminən 7200 futdan təxminən 6800 fut arasında dəyişir. Bu, həssaslıq analizinin və standart dəyərlərdən kənara çıxmağın vacibliyini vurğulayır.

Şəkil 29: Xüsusi məsafə və qutular

Böyük (r) məlumat məsələləri - təsadüfi seçmə

GeoDa-dakı korrelogramın son bir xüsusiyyəti, yerlərdə bir nümunə üçün məkan korrelyasiyalarını hesablamaq qabiliyyətidir, bu da hesablamalarda istifadə olunan cütlərin sayını azaldır. Bu xüsusilə məlumat dəsti böyük olduqda faydalıdır, bu halda cütlərin sayı sürətlə qadağan ola bilər.

Bizim nümunəmizdə bu, həqiqətən də lazım deyil, çünki təsadüfi nümunə yaratmaq üçün istifadə olunan 1.000.000-lük seçmə ölçüsü faktiki məlumatdakı cari ümumi saydan çoxdur. Buna baxmayaraq, prosesi göstərmək üçün geri qayıdıb istifadə edirik 20000 maksimum məsafə üçün, 10 qutu ilə və yoxlayın Təsadüfi Nümunə radio düyməsini, ilə 10000 nümunə ölçüsü üçün, Şəkil 30-da olduğu kimi. Dəqiq təkrarlanmağa imkan vermək üçün Müəyyən olunmuş toxumdan istifadə edin seçim yoxlanılır.

Şəkil 30: Təsadüfi seçilmiş müşahidə cütləri

Bizim nümunəmizdə, nümunə götürülmüş müşahidə cütlərindən yaranan korrelogram, standart vəziyyətdən o qədər də fərqli deyil. Şəkil 31-də göstərildiyi kimi, ilk korrelyasiya daha yüksəkdir, 0,513, lakin aralıq yenidən təxminən 7000 fut təşkil edir. Ümumiyyətlə, seçilmiş seçmə ölçüsü orijinal məlumat ölçüsünə nisbətən çox kiçik olmadığı təqdirdə, nümunə götürmə yaxınlığı olduqca yaxşıdır.

Şəkil 31: Təsadüfi müşahidə cütləri üçün korrelogram


25 Noyabr 2014: PLOS ONE İşçiləri (2014) Düzeltmə: powerlaw: Ağır Kuyruklu Dağılımların Təhlili üçün Python Paketi. PLOS ONE 9 (4): e95816. https://doi.org/10.1371/journal.pone.0095816 düzəlişə baxın

Güc qanunları nəzəri cəhətdən maraqlı ehtimal paylamalarıdır və bu da tez-tez ampirik məlumatları təsvir etmək üçün istifadə olunur. Son illərdə güc qanunlarına uyğun effektiv statistik metodlar hazırlanmışdır, lakin bu metodlardan uyğun istifadə əhəmiyyətli dərəcədə proqramlaşdırma və statistik fikir tələb edir. Güc qanunlarının paylanmasına uyğun yaxşı statistik metodlardan istifadə ilə bağlı maneələri xeyli azaltmaq üçün powerlaw Python paketini hazırladıq. Bu proqram paketi paylama əsas uyğunluğu və statistik təhlili üçün asan əmrləri təmin edir. Xüsusi olaraq, istifadəçi üçün mövcud olan seçimlərdə hərtərəfli olmaqla müxtəlif istifadəçi ehtiyaclarını dəstəkləməyə çalışır. Mənbə kodu ictimaiyyətə açıqdır və asanlıqla genişlənə bilər.

Sitat: Alstott J, Bullmore E, Plenz D (2014) powerlaw: Ağır Kuyruklu Dağılımların Təhlili üçün Python Paketi. PLOS BİR 9 (1): e85777. https://doi.org/10.1371/journal.pone.0085777

Redaktor: Fabio Rapallo, East Piedmont Universiteti, İtaliya

Alındı: 5 sentyabr 2013 Qəbul edildi: 6 dekabr 2013 Nəşr olundu: 29 yanvar 2014

Bu, açıq müəlliflik hüququ olmayan açıq bir məqalədir və sərbəst şəkildə çoxaltmaq, paylamaq, ötürmək, dəyişdirmək, tikmək və ya başqa bir şəkildə hər hansı bir qanuni məqsədlə istifadə etmək olar. Əsər Creative Commons CC0 ictimai sahədəki fədakarlığı altında təqdim olunur.

Maliyyələşdirmə: Bu tədqiqat Milli MentalHealth İnstitutunun İntraural Tədqiqat Proqramı tərəfindən dəstəklənmişdir. Cambridge Universiteti Davranış və Klinik Nörobilim İnstitutu, Wellcome Trust və Tibbi Tədqiqatlar Şurası (İngiltərə) tərəfindən dəstəklənir. J.A. Milli Səhiyyə İnstitutları-Oxford-Cambridge Təqaüd Proqramı tərəfindən dəstəklənir. E.B. yarısı İngilis Cambridge Universiteti, yarısı isə GlaxoSmithKline (GSK) tərəfindən işləyir. Maliyyələşdirənlərin tədqiqat dizaynında, məlumatların toplanmasında və təhlilində, nəşr qərarında və ya əlyazmanın hazırlanmasında heç bir rolu yox idi. Müəlliflər, eyni zamanda müəlliflərdən biri Ed Bullmore'un ticarət pulu olan GlaxoSmithKline (GSK) tərəfindən yarım dəfə işlədiyini elan etmək istərlər. Bu, məlumatların və materialların paylaşılmasına dair bütün PLOS ONE siyasətlərinə riayət etmələrini dəyişdirmir.

Rəqabət maraqları: Müəlliflər rəqabət edən maraqların olmadığını bildirdilər.


Əməliyyatlar və varlıq qrupları

Bir varlıq yaratmaq, yeniləmək və ya silmək üçün hər bir cəhd a kontekstində baş verir əməliyyat. Tək bir əməliyyat istənilən sayda əməliyyatı əhatə edə bilər. Verilənlərin tutarlılığını qorumaq üçün əməliyyat, içərisindəki bütün əməliyyatların vahid olaraq Datastore'a tətbiq edilməsini və ya əməliyyatlardan biri uğursuz olarsa, heç birinin tətbiq edilməməsini təmin edir. Bundan əlavə, eyni əməliyyatda yerinə yetirilən bütün ardıcıl oxunuşlar (əcdad sorğuları və ya əldə edilənlər) məlumatların tutarlı bir anlıq görüntüsünü müşahidə edir.

Qeyd: Əməliyyat etməyə cəhd edərkən tətbiqiniz bir istisna alırsa, bu əməliyyatın uğursuz olması demək deyil. Bir əməliyyat edildiyi və nəticədə müvəffəqiyyətlə tətbiq ediləcəyi təqdirdə də bir Zamanaşımı, TransactionFailedError və ya InteriorError istisna almaq mümkündür. Mümkün olduqda, Datastore əməliyyatlarınızı elə qurun ki, eyni əməliyyat bir dəfədən çox tətbiq olunarsa son nəticə təsir etməyəcəkdir.

Yuxarıda qeyd edildiyi kimi, bir varlıq qrupu, kökü ilə ümumi bir kök elementinə bağlı olan varlıqlar toplusudur. Verilərin şəxs qruplarına bölünməsi, hansı əməliyyatların edilə biləcəyini məhdudlaşdıra bilər:

  • Bir əməliyyatla əldə edilən bütün məlumatlar ən çox 25 müəssisə qrupunda olmalıdır.
  • Bir əməliyyatda sorğulardan istifadə etmək istəyirsinizsə, məlumatlarınız şəxsiyyət qruplarına bölünməlidir ki, düzgün məlumatlarla uyğunlaşacaq əcdad filtrləri təyin edəsiniz.
  • Vahid bir qrup daxilində saniyədə təxminən bir əməliyyatın yazma qabiliyyəti həddi var. Bu məhdudiyyət Datastore'un geniş bir coğrafi ərazidə yüksək etibarlılıq və səhv tolerantlığını təmin etmək üçün hər bir varlıq qrupunun ustadsız, sinxron təkrarlanması ilə həyata keçirildiyi üçün mövcuddur.

In many applications, it is acceptable to use eventual consistency (i.e. a non-ancestor query spanning multiple entity groups, which may at times return slightly stale data) when obtaining a broad view of unrelated data, and then to use strong consistency (an ancestor query, or a get of a single entity) when viewing or editing a single set of highly related data. In such applications, it is usually a good approach to use a separate entity group for each set of highly related data. For more information, see Structuring for Strong Consistency.


2. Propose a number of aggregates that each API could provide when queried

I think for this task it is mostly about the context of the interview you are in. This is a fraud detection company, and I think this should be reflected in your answer to this task.

I am not from this business, so no idea what would make sense, but if I were to do something, I'd do something like:

GET /accounts/:src_bin/statistics - returns min , max , mean of outgoing transactions of the given :src_bin .

or even something of higher level like:

GET /accounts/:src_bin/outliers - returns out of the ordinary transactions for the given :src_bin

Where you implement any outlier detection algorithm you find on the internet, to allow API users to find "suspicious" transactions.

This shows that you are not just another coding monkey, but instead that you are able to think in the business domain of the company you're going to work with, which is a very important skill for any software engineer.


What's next

  • For more information about using transfers, including getting information about a transfer configuration, listing transfer configurations, and viewing a transfer's run history, see Working with transfers.

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.


Videoya baxın: Filling In The Gaps With the Mapillary API (Oktyabr 2021).