Daha çox

Həndəsə dəyişəndə ​​atribut cədvəlindəki dəyərlər avtomatik təzələnir?


Avtomatik təravətləndirici atribut cədvəli məlumatları üçün bir həll tapa bilmirəm.

Məsələn, xüsusiyyət həndəsəsi dəyişdirildiyi təqdirdə Shapefile xüsusiyyətləri ilə əlaqəli məlumatlar (məsələn, sahə) necə yenilənə bilər.


Aşağıdakı PyQGIS skript ilə xüsusiyyət atributlarının avtomatik yenilənməsini aktivləşdirə bilərsiniz.

Bu nümunədə deyilən bir çoxbucaqlı təbəqəniz varmyPolygons, başqaları arasında ad alanları varsahəperimetri.

Kodu kopyalayın və QGIS Python Konsoluna yapışdırın.

# Lazım olan dəyişənləri başlatın myLayer = QgsMapLayerRegistry.instance (). MapLayersByName ('myPolygons') [0] areaField = myLayer.fieldNameIndex ('area') perimeterField = myLayer.fieldNameIndex ('perimetre'At Updates') # Slot, fId, geom = Yoxdur): f = myLayer.getFeatures (QgsFeatureRequest (fId)) .next () deyilsə geom: geom = f.geometry () myLayer.changeAttributeValue (fId, areaField, geom.area ()) myLayer.changeAttribute (fId, perimeterField, geom.length ()) # Yeni xüsusiyyətlər əlavə edildikdə və ya həndəsə dəyişdikdə xüsusiyyət xüsusiyyətlərini yeniləyin myLayer.featureAdded.connect (updateFeatureAttrs) myLayer.geometryChanged.connect (updateFeatureAttrs)

İndi hər dəfə yeni bir çoxbucaqlı əlavə edinmyPolygonsqat və ya ondan hər hansı bir çoxbucağı dəyişdirin, müvafiq atributları (sahəsi və ətrafı) yenilənəcəkdir.

Başqa bir sualda, xətt xüsusiyyətləri ilə bir nümunə göndərdim.


Həndəsə dəyişəndə ​​atribut cədvəlindəki dəyərlər avtomatik təzələnir? - Coğrafi İnformasiya Sistemləri

CƏDVƏLLƏR cədvəli verilənlər bazalarındakı cədvəllər haqqında məlumat verir.

Cədvəl statistikasını əks etdirən CƏDVƏLLƏRdəki sütunlarda önbelleğe alınan dəyərlər saxlanılır. İnformation_schema_stats_expiry sistem dəyişənləri, keşləşdirilmiş cədvəl statistikasının bitməsindən əvvəlki dövrü müəyyənləşdirir. Varsayılan 86400 saniyədir (24 saat). Keşlənmiş statistika yoxdursa və ya statistikanın vaxtı keçibsə, cədvəl statistikası sütunlarına sorğu göndərdikdə statistika saxlama mühərriklərindən alınır. Verilmiş bir cədvəl üçün istənilən vaxt önbelleğe alınan dəyərləri yeniləmək üçün ANALİZ TABLE istifadə edin. Ən son statistik məlumatları həmişə birbaşa yaddaş mühərriklərindən almaq üçün information_schema_stats_expiry-i 0-a qoyun. Daha çox məlumat üçün Bölmə 8.2.3-ə baxın, "INFORMATION_SCHEMA Sorğularını Optimize Etmə".

İnnodb_read_only sistem dəyişəni aktivdirsə, InnoDB istifadə edən məlumat lüğətindəki statistika cədvəllərini yeniləyə bilmədiyi üçün TƏHLİL CƏDVƏLİ uğursuz ola bilər. Açar paylamanı yeniləyən TƏHLİL TƏHLİLİ əməliyyatları üçün əməliyyat cədvəlin özünü yeniləsə də (məsələn, bir MyISAM cədvəli olduqda) uğursuzluq ola bilər. Yenilənmiş paylama statistikasını əldə etmək üçün information_schema_stats_expiry = 0 qoyun.

CƏDVƏLLƏR cədvəlində bu sütunlar var:

Cədvəlin aid olduğu kataloqun adı. Bu dəyər həmişə defdir.

Cədvəlin aid olduğu şemanın (verilənlər bazasının) adı.

Cədvəl üçün BAZA CƏDVƏL, görünüş üçün GÖRÜN və ya BİLGİ_SCHEMA cədvəli üçün SİSTEM GÖRÜNÜŞ.

TABLES cədvəli müvəqqəti cədvəllərin siyahısını vermir.

Bölünmüş cədvəllər üçün ENGINE bütün bölmələr tərəfindən istifadə olunan saxlama mühərrikinin adını göstərir.

Bu sütun istifadə olunmayıb. MySQL 8.0-da .frm sənədlərinin silinməsi ilə bu sütun artıq MySQL 5.7-də istifadə edilən son .frm fayl versiyası olan 10 kodlu bir dəyəri bildirir.

Sıra saxlama formatı (Sabit, Dinamik, Sıxılmış, Ehtiyat, Kompakt). MyISAM masaları üçün Dinamik nəyə uyğundur myisamchk -dvv Paketli olaraq hesabat verir.

Sıraların sayı. MyISAM kimi bəzi saxlama mühərrikləri dəqiq sayını saxlayır. InnoDB kimi digər saxlama mühərrikləri üçün bu dəyər təqribidir və həqiqi dəyərdən% 40 ilə% 50 arasında dəyişə bilər. Bu cür hallarda dəqiq sayma əldə etmək üçün SEÇİN SAYI (*) istifadə edin.

TABLE_ROWS, INFORMATION_SCHEMA masaları üçün boşdur.

InnoDB cədvəlləri üçün sətir sayı yalnız SQL optimallaşdırmasında istifadə edilən təxmini bir təxmindir. (InnoDB cədvəli bölünürsə, bu da doğrudur.)

MyISAM üçün DATA_LENGTH, bayt şəklində məlumat faylının uzunluğudur.

InnoDB üçün DATA_LENGTH, kümelenmiş indeks üçün ayrılmış yerin bayt şəklində təxmini yeridir. Konkret olaraq, bu, InnoDB səhifə ölçüsünə vurulmuş, səhifələr şəklində kümelenmiş indeks ölçüsüdür.

Digər saxlama mühərrikləri ilə bağlı məlumat üçün bu hissənin sonundakı qeydlərə baxın.

MyISAM üçün MAX_DATA_LENGTH məlumat faylının maksimum uzunluğudur. Bu istifadə olunan məlumat göstəricisinin ölçüsü nəzərə alınmaqla cədvəldə saxlanıla bilən məlumatların ümumi sayının sayıdır.

Digər saxlama mühərrikləri ilə bağlı məlumat üçün bu hissənin sonundakı qeydlərə baxın.

MyISAM üçün INDEX_LENGTH indeks faylının bayt uzunluğudur.

InnoDB üçün INDEX_LENGTH, qruplaşdırılmamış indekslər üçün bayt şəklində ayrılan təxmini yerdir. Konkret olaraq, bu, InnoDB səhifə ölçüsünə vurulmuş, qrup şəklində olmayan indeks ölçülərinin cəmidir.

Digər saxlama mühərrikləri ilə bağlı məlumat üçün bu hissənin sonundakı qeydlərə baxın.

Ayrılmış, lakin istifadə olunmamış baytların sayı.

InnoDB cədvəlləri cədvəlin aid olduğu masa boşluğunu bildirir. Paylaşılan masa məkanında yerləşən bir masa üçün bu, paylaşılan masa boşluğunun boş yeridir. Birdən çox cədvəl istifadə edirsinizsə və cədvəlin öz masa sahəsi varsa, boş yer yalnız o cədvəl üçündür. Boş yer, təhlükəsizlik hüququ çıxılmaqla tamamilə sərbəst olan baytların sayı deməkdir. Boş yer 0 olaraq göstərilsə də, yeni ölçülərin ayrılmasına ehtiyac olmadığı müddətdə sətirlər əlavə etmək mümkündür.

NDB Kümesi üçün DATA_FREE diskdə ayrılmış, lakin Disk Məlumatları cədvəli və ya diskdəki bir parça üçün istifadə edilmir. (Yaddaşda olan məlumat mənbəyi istifadəsi DATA_LENGTH sütunu ilə bildirilir.)

Bölünmüş cədvəllər üçün bu dəyər yalnız bir təxmindir və tamamilə doğru olmaya bilər. Belə hallarda bu məlumatları əldə etmək üçün daha dəqiq bir üsul, bu nümunədə göstərildiyi kimi INFORMATION_SCHEMA PARTITIONS cədvəlini soruşmaqdır:

Növbəti AUTO_INCREMENT dəyəri.

Cədvəl yaradıldıqda.

Məlumat faylı son dəfə yeniləndikdə. Bəzi saxlama mühərrikləri üçün bu dəyər NULL-dur. Məsələn, InnoDB sistem cədvəlində birdən çox cədvəl saxlayır və məlumat faylı zaman damgası tətbiq olunmur. Hər bir InnoDB cədvəlində ayrı bir .ibd faylında olan masa başına fayl rejimi ilə belə, dəyişiklik tamponlaması məlumat sənədinə yazmağı gecikdirə bilər, buna görə də faylın modifikasiya müddəti son daxiletmə, yeniləmə və ya silmə vaxtından fərqlidir. MyISAM üçün məlumat faylı zaman damgası istifadə olunur, Windows-da zaman damgası yeniləmələrlə yenilənmir, buna görə dəyər səhvdir.

UPDATE_TIME, bölünməmiş InnoDB masalarında yerinə yetirilən son UPDATE, INSERT və ya DELETE üçün zaman damgası dəyərini göstərir. MVCC üçün zaman damgası dəyəri, son yeniləmə vaxtı hesab olunan COMMIT vaxtını əks etdirir. Server yenidən işə salındıqda və ya cədvəl InnoDB məlumat lüğəti yaddaşından çıxarıldıqda zaman damğaları davam etdirilmir.

Cədvəl son dəfə yoxlanıldıqda. Bütün saxlama mühərrikləri bu dəfə yenilənmir, bu vəziyyətdə dəyər həmişə NULL olur.

Bölünmüş InnoDB masaları üçün CHECK_TIME həmişə NULL olur.

Cədvəlin standart qarışdırılması. Çıxışda cədvəlin standart simvol dəsti açıq şəkildə göstərilmir, lakin uyğunlaşma adı simvol dəsti adı ilə başlayır.

Varsa, canlı məbləğ dəyəri.

CREATE_OPTIONS bölünmüş cədvəl üçün bölünmüşdür.

MySQL 8.0.16-dan əvvəl, CREATE_OPTIONS, masa başına fayl masalarında yaradılan cədvəllər üçün göstərilən Şifrələmə müddəasını göstərir. MySQL 8.0.16-dan etibarən, cədvəl şifrələnmişsə və ya göstərilən şifrələmə şema şifrələməsindən fərqlənərsə, masa başına fayl masaları üçün şifrələmə müddəasını göstərir. Şifrələmə müddəası ümumi cədvəllərdə yaradılan cədvəllər üçün göstərilmir. Şifrələnmiş masa başına fayl və ümumi masa boşluqlarını müəyyənləşdirmək üçün INNODB_TABLESPACES ENCRYPTION sütununa müraciət edin.

Ciddi rejimi deaktiv edilmiş bir cədvəl yaradarkən, müəyyən edilmiş sıra formatı dəstəklənmədikdə, saxlama mühərrikinin standart sətir formatı istifadə olunur. Cədvəlin həqiqi sıra formatı ROW_FORMAT sütununda bildirilir. CREATE_OPTIONS, CREATE TABLE ifadəsində göstərilən sıra formatını göstərir.

Cədvəlin saxlama mühərriki dəyişdirilərkən, yeni saxlama mühərriki üçün tətbiq olunmayan cədvəl variantları cədvəlin əvvəlcədən təyin olunmuş variantları ilə ehtiyac olduqda orijinal saxlama mühərrikinə çevrilməsini təmin etmək üçün cədvəl tərifində saxlanılır. CREATE_OPTIONS sütunu saxlanılan seçimləri göstərə bilər.

Cədvəl yaradarkən istifadə olunan şərh (və ya MySQL-in cədvəl məlumatlarına nə üçün girə bilməməsi barədə məlumat).

Qeydlər

NDB masaları üçün, bu ifadənin çıxışı, BLOB sütunlarının nəzərə alınmaması istisna olmaqla, AVG_ROW_LENGTH və DATA_LENGTH sütunları üçün uyğun dəyərləri göstərir.

NDB cədvəlləri üçün DATA_LENGTH ana yaddaşda saxlanılan məlumatları ehtiva edir, yalnız MAX_DATA_LENGTH və DATA_FREE sütunları Disk Verilərinə tətbiq olunur.

NDB Cluster Disk Data masaları üçün MAX_DATA_LENGTH bir Disk Data cədvəlinin və ya fraqmentinin disk hissəsi üçün ayrılmış boşluğu göstərir. (Yaddaşda olan məlumat mənbəyi istifadəsi DATA_LENGTH sütunu ilə bildirilir.)

MEMORY cədvəlləri üçün DATA_LENGTH, MAX_DATA_LENGTH və INDEX_LENGTH dəyərləri ayrılmış yaddaşın həqiqi miqdarına yaxınlaşır. Ayrılma alqoritmi, ayırma əməliyyatlarının sayını azaltmaq üçün yaddaşı böyük həcmdə saxlayır.

Baxışlar üçün əksər TABLE sütunları 0 və ya NULL-dür, istisna olmaqla TABLE_NAME görünüş adını, CREATE_TIME yaradılış vaxtını göstərir və TABLE_COMMENT VIEW deyir.

Cədvəl məlumatlarını ŞOU CƏDVƏLİNİN GÖSTƏRİMİ və GÖSTƏRMƏ TABLOLARI ifadələrindən də əldə etmək olar. Bölmə 13.7.7.38, "CƏDVƏLİN STATUS GÖSTƏRİMİ" və Bölmə 13.7.7.39, "TABLOLARI GÖSTƏR" ifadəsinə baxın. Aşağıdakı ifadələr ekvivalentdir:


3.4.0¶ üçün API dəyişiklikləri

Davranış dəyişir¶

Kısıtlı düzeni yenidən yazmaq¶

Constrained_layout düzeni meneceri, mürəkkəb alt plan layoutlarına daha möhkəm olması lazım olan fərqli xarici məhdudiyyətlərlə yenidən yazıldı. İstifadəçiyə baxan dəyişikliklər bunlardır:

  • bəzi zəif məhdudlaşdırılan planların əvvəlkindən fərqli fərqli genişlik / hündürlük sahələri olacaqdır.
  • rəng çubuqları indi matplotlib.colorbar.make_axes-nin anker açar söz arqumentinə hörmət edir
  • rəng çubuqları daha genişdir.
  • müxtəlif sətirlərdə və ya sütunlarda rəng çubuqları daha möhkəm bir şəkildə düzülür.
  • boşluqboşluq Figure.set_constrained_layout_pads seçimləri sənədlərin deyildiklərindən iki dəfə daha geniş idi. Beləliklə, indi sənədləri izləyin.

Bu xüsusiyyət yeni dəyişikliklər istifadəçilər tərəfindən kifayət qədər istifadə olunana qədər & quotekperimental & quot olaraq qalacaq, buna görə də 3.5 və ya 3.6 versiyasını gözləyirik. Digər tərəfdən, constrained_layout geniş şəkildə sınanır və kitabxanadakı nümunələrdə istifadə olunur, ona görə də istifadə təhlükəsiz olmalıdır, lakin tərtiblər daha çox inkişafın baş verməsi ilə tam eyni ola bilməz.

Constrained_layout-un istifadəsi və alqoritminin təfərrüatları Məhdud Layout Kılavuzunda mövcuddur

Plt.subplot açar söz arqumentləri olmadan yenidən seçim

Pyplot.subplot-un məqsədi qəti şəkildə örtülü pyplot API-də işləyərkən bir Şəkildə Oxlar yaratmağı və yenidən seçməyi asanlaşdırmaqdır. Yeni oxlar yaratarkən proyeksiyanı seçmək mümkündür (məsələn, qütb, 3D və ya müxtəlif kartoqrafik proqnozlar) və əlavə açar söz arqumentlərini yaradılan Axes alt sinfinə keçirtmək mümkündür.

Birinci dəfə pyplot.subplot həmişə yaradılan və ötürülən arqumentlər və proyeksiya ilə yeni bir Oxları qaytaran (düzbucaqlı olaraq düzəldilmiş) oxlar bəndində müəyyən bir vəziyyət üçün çağırılır. Pyplot.subplot-a edilən növbəti zənglərdə mövcud bir oxun a) ekvivalent parametrləri olub olmadığını, bu halda cari oxlar kimi seçilib geri qaytarılmalı olduğunu və ya b) fərqli parametrlərin olub olmadığını müəyyənləşdirməliyik, bu halda yeni bir oxlar yaradılır və mövcud Eksenler silinir. Bu & quotekvivalent parametrlər & quot; nədir sualını verir.

Əvvəllər, Axes3D xaricində mövcud bir Axes alt sinifinin, fərqli proqnozlara sahib olmasına baxmayaraq, 2D düz xəttli Eksenlərə bərabər hesab ediləcəyi, əgər açar söz arqumentləri (başqa proyeksiya) uyğun gəldi. Beləliklə:

Bu uzun müddət davam edən davranışı, hər hansı bir açar söz arqumentinin (hər hansı bir şəkildə) pyplot.subplot-a ötürülməməsi halında mövcud oxları geri qaytarmamasını təmin etmək üçün açar sözlər və ya əvvəlcə onu yaratmaq üçün istifadə olunan proyeksiya nəzərə alınmadan təmin edirik. Bu, əlavə açar sözlər orijinal Baltalara ötürüldükdə davranış dəyişikliyinə səbəb olacaqdır:

Eyni səbəbdən, düzxətli olmayan mövcud bir Oxlar olsaydı, proyeksiya = 'düzxətli' keçərək mövcud oxları yenidən istifadə edərdi

istifadəçinin tələbinə zidd.

Əvvəllər Axes3D, əlaqəsiz bir səhv səbəbiylə pyplot.subplot ilə yenidən seçilə bilməzdi (Matplotlib 3.4-də də düzəldilmişdir). Axes3D indi bütün digər proqnozlarla uyğun gəlsə də, davranışlarında bir dəyişiklik var

Ioff və ion kontekst menecerləri kimi istifadə edilə bilər¶

pyplot.ion və pyplot.ioff artıq müvafiq olaraq interaktiv rejim açıq və ya söndürülmüş bir kontekst yaratmaq üçün kontekst menecerləri kimi istifadə edilə bilər. Bu funksiyaları çağırmağın köhnə davranışı qorunur. Yeni funksionallığı aşağıdakı kimi istifadə etmək üçün zəng edin:

Yer tapanlar və formatlaşdırıcılar sinif iyerarxiyasında olmalıdır¶

Eksen axtarışçıları və formatlayıcılar artıq müvafiq olaraq Locator və Formatter alt sinifləri olmalıdır.

GÜNLÜK interval üçün tarix tapan artıq ayın ortasına qayıdır¶

Matplotlib.dates.AutoDateLocator bir defolt interval_multiples = Düzdür, gənələri ayın başlanğıcı və ya günün başlanğıcı kimi mənalı aralıqların başlanğıcı ilə uyğunlaşdırmağa cəhd edənlər, təxminən 140 günlük fasilələrin eşlenmesine səbəb olur. ayın birinci və 22-si. Bu, indi elə dəyişdirilib ki, ayın birinci və 15-ni seçsin, yəqin ki, insanların çoxunun istədiyi budur.

ScalarFormatter useLocale seçim qruplaşdırmaya itaət edir¶

Zaman ScalarFormatter seçimi useLocale aktivdir (və ya rcParams [& quotaxes.formatter.use_locale & quot] (default: False) Doğru) və konfiqurasiya edilmiş yerli qruplaşdırma istifadə edirsə, lokal.format_string-də təsvir edildiyi kimi bir ayırıcı əlavə ediləcəkdir.

Axes.errorbar qeyri rəng xüsusiyyətlərini düzgün dövr edir¶

Əvvəllər Axes.errorbar, bir xüsusiyyət açıq şəkildə göstərildiyi təqdirdə, xüsusiyyət döngüsü digər xüsusiyyətlər üçün (xətt stili kimi) olsa da, Axes xüsusiyyət dövrünü səhv atladı. İndi Axes.errorbar, Axes.plot üçün edildiyi kimi Axes xassəsi dövrünü irəliləyəcək, yəni cyclerdəki bütün xüsusiyyətlər açıq şəkildə ötürülmədikcə.

Pyplot.specgram həmişə mənşəyi istifadə edir = 'yuxarı'

Əvvəllər rcParams [& quotimage.origin & quot] (standart: 'yuxarı') 'yuxarı' xaricində başqa bir şeyə qoyulmuşsa və ya mənşə açar söz mübahisəsi 'yuxarı' xaricində bir dəyərlə ötürüldü, spektrogramın özü sürüşəcək, ancaq oxlar 'yuxarı' mənşəli dəyər üçün yönəldiləcək, beləliklə ortaya çıxan süjet səhv etiketlənmişdi.

İndi mənşə açar söz mübahisəsi dəstəklənmir və image.origin rcParam məhəl qoyulmur. Matplotlib.pyplot.specgram funksiyası mənşəyi = 'yuxarı' istifadə etmək məcburiyyətindədir, beləliklə Eksenlər qurulmuş spektrogram üçün düzgündür.

Xunits = Heç biri və yunits = Heç biri açar söz arqumentləri & quotno action & quot¶ kimi qəbul edilmir

Axes üzərindəki metodların çoxu (hamısı deyil) açar söz arqumentlərini götürür xunitsyunits Axis.set_units və Axis.update_units çağıraraq verilmiş oxdakı vahidləri yeniləyəcəkdir.

Əvvəllər əgər Yoxdur qəbul edildi .Axis.units-də saxlanılan dəyəri təmizləyəcək və bu da öz növbəsində .Axis.units-in dəyərinə etibar edən çeviriciləri qıracaq (xüsusilə StrCategoryConverter).

Bu, ax.meth semantikasını dəyişdirir (. Xunits = Yoxdur, yunits = Yoxdur) & quot; vahidləri & quot; silinmiş kimi & quot; silmək üçün varsayılan şeyi & quot etmək üçün Matplotlib açar söz arqumentlərinin standart davranışına uyğundur.

Keçən xunits = .Axes.units atributunu silmək üçün plan qurma metodlarına etibar etmirsinizsə, birbaşa Axis.set_units (və çeviricinin də güncəllənməsini tələb edirsinizsə Axis.update_units) çağırın.

Annotasiya_klipli ek notlar artıq sıkı-layout-a təsir göstərmir ¶

Əvvəllər text.Annotation.get_tightbbox, həmişə annotation_clip dəyərindən asılı olmayaraq obyektin tam text.Annotation.get_window_extentini qaytarırdı. text.Annotation.get_tightbbox indi bu əlavə kəsmə qutusunu düzgün şəkildə nəzərə alır, yəni annotation_clip səbəbi ilə çəkilməyən izahatlar ssıx_layout tərəfindən edilən oxlar məhdudlaşdıran qutu hesablamalarına hesablanmayacaqdır.

Bu, get_window_extent-in tam həcmləri qaytarmalı olduğunu və get_tightbbox-un & quot; hər hansı bir kəsmə üçün hesabı & quot etməsini tələb edən Artist-də təsvir olunan API ilə uyğundur.

Parazit Axes pcolor və pcolormesh artıq defolt olaraq ızgara kənarlarını yarı tam deyil, tam ədədlərə qoyur¶

Bu pcolor və pcolormesh ilə uyğundur.

Colorbar konturu artıq bir Onurğadır ¶

Colorbarın konturu artıq bir onurğa şəklindədir və bir sənətkar kimi çəkilən bir çoxbucaqlı əvəzinə bir şəkil kimi çəkilmişdir. Bu, normal oxlardakı tikanlarla uyğun gələn bütün sənətkarlardan sonra (yəni üstündə) həmişə çəkiləcəyini təmin edir.

Colorbar.dividers dəyişiklikləri¶

Bu atribut artıq həmişə bir LineCollection olur - əgər cizgilər varsa boşdur Yalan. Varsayılan rəngləri və xətt genişliyi (rcParams [& quotaxes.edgecolor & quot] (standart: 'qara'), rcParams [& quotaxes.linewidth & quot] (standart: 0.8)) indi çəkiliş vaxtında deyil, anlıq vaxtda həll olunur.

Bir Colormap qeydiyyatını iki dəfə artırın və ya xəbərdar edin¶

Matplotlib.cm.register_cmap istifadəçisini və ya üçüncü tərəf colormapını qeyd etmək üçün istifadə edərkən, quraşdırılmış colormaplardan birini həddindən artıq yazmağa çalışarkən bir ValueError meydana gətirəcək və istifadəçi tərəfindən qeydiyyatdan keçmiş bir colormap yazmağa çalışdığınız barədə xəbərdarlıq edəcəkdir. Bu gələcəkdə istifadəçi tərəfindən qeydiyyatdan keçmiş colormaps üçün artıra bilər.

Ardıcıl rasterləşdirilmiş çəkilişlər indi birləşdirildi¶

Raster çəkmələrinin dərinliyini izləmək backend_mixed.MixedModeRenderer.start_rasterizing və backend_mixed.MixedModeRenderer.stop_rasterizing-dan artist.allow_rasterization-a keçdi. Bu, başlanğıc və dayandırma funksiyalarının yalnız rasterizasiyanın həqiqətən başlanmasına və dayandırılmasına ehtiyac olduqda çağırıldığı deməkdir.

Rasterləşdirilmiş elementlərin birləşdirilməsi halında vektor arxa tərəflərinin çıxışı dəyişəcəkdir. Bu çıxışların görünüşünü dəyişdirməməlidir.

Üçüncü tərəf arxa tərəflərindəki göstəricilərin artıq self._raster_depth və self._rasterizasiyanın 0-a başlaması gözlənilir. Yalan müvafiq olaraq.

Draw_if_interactive () -ın arxa tərəflərdəki ardıcıl davranışı

pyplot.draw_if_interactive Tk və nbAgg arxa hissələrində pəncərəni (əvvəllər göstərilməmişdisə) artıq bütün digər arxa tərəflərlə ardıcıl olaraq göstərmir.

Artist mülkü rasterləşdirilmişdir ola bilməz Yoxdur artıq¶

İndi yalnız bir boolean. Varsayılan əvvəl Yoxdur və Artist.set_rasterized qəbul etmək üçün sənədləşdirilmişdir Yoxdur. Lakin, Yoxdur xüsusi bir məna daşımamış və rəftar edilmişdir Yalan.

Canvas-ın geri çağırma reyestri artıq Şəkildə saxlanılır¶

Şəkil / Canvas hadisələrini idarə etmək üçün istifadə edilən CallbackRegistry-in kanonik yeri, Canvas-dan Şəkilə köçürülmüşdür. Bu dəyişiklik demək olar ki, bütün istifadəçilər üçün şəffaf olmalıdır, lakin şəkli bir Kətanın üstündən dəyişdirib dəyişdirirsinizsə və ya əksinə viza etsəniz, davranışda bir dəyişiklik görə bilərsiniz.

Arxa planlarda uyğunlaşdırılmış əsas hadisə məlumatları¶

Açar tərcümə dəstəyi ilə fərqli arxalar, indi & quotShift & quot-i bəzən dəyişdirici olaraq idarə edir; burada əsas tərcümə edildikdə 'shift +' prefiksi əlavə olunmayacaq.

Qt5 arxa hissəsində, matplotlib.backends.backend_qt5.SPECIAL_KEYS lüğətində işləyən düymələr var yox unicode adını qaytarmaq əvəzinə əl ilə göstərilən adları var. QtCore.Qt.Key_Meta üçün ad, digər GUI arxa planlarına uyğun olmaq üçün 'meta' olaraq dəyişdirildi.

Artıq WebAgg arxa planı ABŞ-dan kənar klaviatura tərtiblərindəki əsas tərcümələri düzgün şəkildə idarə edir.

GTK və Tk arxa hissələrində, ASCII olmayan düymə basmalarının işlənməsi (KeyEvent-də key_press_event -handlers-ə ötürüldüyü kimi) indi Unicode simvollarını (məsələn, €) düzgün hesab edir və NumLock-a numpad üzərində daha yaxşı hörmət edir.

GTK və Tk arxa hissələrində, aşağıdakı açar adlar yeni adların Qt arxa hissələrinin bildirdikləri ilə uyğun gəldiyini dəyişdirdi:

  • & QuotBreak / Pause & quot düyməsi (0xff13 düymələri) indi & quotbreak & quot əvəzinə & quotpause & quot olaraq bildirilir (bu da X açar adı ilə uyğundur).
  • Rəqəmsal & quotdelete & quot düyməsi artıq & quotdec & quot əvəzinə & quotdelete & quot olaraq bildirilir.

WebAgg backend artıq sağ klik kimi orta klik hesabat vermir¶

Əvvəllər WebAgg arxa planını istifadə edərkən, hadisə fig.canvas.mpl_connect ('mouse_button_event', callback) tərəfindən bir geri çağırışa orta kliklə ötürülərək MouseButton.MIDDLE əvəzinə MouseButton.RIGHT hesabatı verilirdi.

SVG sənədlərindəki XML etiketlərinin ID xüsusiyyəti indi MD5¶-dən çox SHA256-ya əsaslanır

Matplotlib, SVG sənədlərindəki müxtəlif etiketlər üçün unikal identifikasiya xüsusiyyətləri yaradır. Matplotlib əvvəllər bu unikal identifikatorları bir MD5 hash-in ilk 10 simvolundan istifadə edərək yaratmışdı. MD5 hashing alqoritmi, Federal İnformasiya Qenerasiya Standartlarının (FIPS) aktiv olduğu sistemlərdə Python-da mövcud deyil. Matplotlib indi bunun əvəzinə bir SHA256 karmağının ilk 10 simvolundan istifadə edir. Əks təqdirdə əvvəlki matplotlib versiyaları ilə yadda qalanlarla uyğunlaşacaq SVG faylları fərqli ID xüsusiyyətlərinə sahib olacaqdır.

RendererPS.set_font artıq AFM rejimində qadağandır

RendererPS.set_font artıq bütün hallarda cari PostScript şriftini təyin edir.

Axes3D¶-də avtomatik ölçmə

Matplotlib 3.2.0-da avtomatik ölçmə 2D Axes üçün daha cəlbedici hala gətirildi, yəni məhdudiyyətlər yalnız kətan göstərildikdə və ya istifadəçi Axes limitlərini soruşduqda yenidən hesablanacaqdır. Bu performans yaxşılaşdırılması artıq Axes3D-yə qədər uzadıldı. Bu, eyni zamanda Axes3D-də gözlənilmədən tetiklenmiş avtoyazma ilə bağlı bəzi problemləri həll edir.

Daha ətraflı məlumat üçün 2D Axes üçün API dəyişikliyinə baxın.

Axes3D avtomatik olaraq özünü Şəkilə əlavə edir köhnəlir

Yeni Axes3D obyektləri əvvəllər yaradıldıqları zaman özlərini rəqəmlərə əlavə edirdilər, digər bütün Axes siniflərindən fərqli olaraq, fig.add_subplot (111, proyeksiya = '3d') deyildiyi təqdirdə iki dəfə əlavə olunmasına səbəb olurdu.

Bu davranış artıq ləğv edildi və xəbərdarlıq edəcək. Yeni açar söz arqumenti auto_add_to_figure davranışı idarə edir və xəbərdarlığı yatırmaq üçün istifadə edilə bilər. Varsayılan dəyər dəyişəcək Yalan Matplotlib 3.5-də və hər hansı birYalan Matplotlib 3.6-da bir səhv olacaq.

Gələcəkdə Axes3D-nin rəqəmə açıq şəkildə əlavə edilməsi lazımdır

digər oxlar üçün edilməli olduğu kimi. alt siniflər. Və ya bir 3D proyeksiya:

Mplot3d.art3d.get_dir_vector həmişə NumPy massivlərini qaytarır¶

Tutarlılıq üçün get_dir_vector indi 3 element təkrarlana bilsə də həmişə NumPy massivlərini qaytarır.

Dəyişdirilmiş cursive və fantaziya şrift tərifləri¶

Comic Sans və Comic Neue şriftləri varsayılan rcParams-dan köçürüldü [& quotfont.fantasy & quot] (standart: ['Chicago', 'Charcoal', 'Impact', 'Western', 'Humor Sans', 'xkcd', 'fantasy' ]) standart rcParams siyahısına [& quotfont.cursive & quot] (standart: ['Apple Chancery', 'Tekstil', 'Zapf Chancery', 'Sand', 'Script MT', 'Felipa', 'Comic Neue', 'Comic Sans MS ',' cursive ']) ayarı, CSS şrift ailələri nümunəsinə uyğun olaraq və Microsoft'un Core Fonts dəstində mövcud bir cursive font təmin etmək üçün.

Docstring.Substitution indi həmişə string interpolation əvvəl docstrings ayırır ded

Təxirə salma¶

Eksen konstruktoruna əlavə parametrlər¶

Axes konstruktorunun xaricindəki parametrləri əncirdüz gələcək versiyada yalnız açar söz olacaqdır.

Pyplot.gca və Figure.gca açar söz arqumentləri¶

Açar söz arqumentlərinin pyplot.gca ya da Figure.Figure.gca saytlarına ötürülməsi gələcəkdə dəstəklənməyəcəkdir.

Axis.cla, RadialAxis.cla, ThetaAxis.cla və Spine.cla ¶

Bu metodlar müvafiq aydın () metodlarının lehinə köhnəlir.

Yanlış lyuk naxış simvolları artıq nəzərə alınmır¶

Yumurtadan çıxartma qaydaları təyin edilərkən, tanınmayan simvollar amortizasiya xəbərdarlığını artıracaqdır. Gələcəkdə bu çətin bir səhv olacaq.

URL-lərdən oxumaq

İmread () -ə bir URL ötürmək ləğv olunur. Zəhmət olmasa oxumaq üçün URL açın və birbaşa Yastıq API'sini (PIL.Image.open (urllib.request.urlopen (url)) və ya PIL.Image.open (io.BytesIO (Request.get (url) .content)) istifadə edin. ) əvəzinə.

Subplot ilə əlaqəli atributlar və metodlar¶

Bəzi SubplotBase metodları və atributları köhnəlmiş və / və ya SubplotSpec-ə köçürülmüşdür:

  • get_geometry (bunun əvəzinə SubplotBase.get_subplotspec istifadə edin),
  • change_geometry (əvəzinə SubplotBase.set_subplotspec istifadə edin),
  • is_first_row, is_last_row, is_first_col, is_last_col (əvəzinə SubplotSpec nümunəsində müvafiq metodlardan istifadə edin),
  • update_params (indi işə yaramayan),
  • figbox (həndəsəni yenidən hesablamaq üçün ax.get_subplotspec (). get_geometry (ax.figure) istifadə edin və ya cari dəyərini oxumaq üçün ax.get_position ()),
  • numRows, numCols (əvəzinə GridSpec-də nrows və ncols atributundan istifadə edin).

Eyni şəkildə, SubplotDivider-in get_geometry, change_geometry, update_params və figbox metodları / atributları ləğv edildi və oxşar dəyişikliklərlə.

Is_url və URL_REGEX ¶

. köhnəlmişdir (Bunlar əvvəllər toplevel matplotlib modulunda müəyyən edilmişdir.)

Matplotlib.style.core deprecations¶

STYLE_FILE_PATTERN, load_base_library və iter_user_libraries istifadəsizdir.

Tick.apply_tickdir istifadəsizdir is

apply_tickdir, əvəzinə Axis.set_tick_params istifadə edərək gənələrin çəkilməsi üçün istifadə olunan mövcud Line2D obyektlərindəki gənə işarələrini yeniləmədi.

FancyArrowPatch-in dpi_cor mülkiyyəti ¶

Bu parametr daxili hesab olunur və köhnəlmişdir.

Passing boxstyle = & quotcustom & quot, bbox_transmuter =. FancyBboxPatch-ə ¶

Xüsusi bir qutu stilindən istifadə etmək üçün birbaşa olaraq keçin boxstyle FancyBboxPatch ilə mübahisə. Bu əvvəllər artıq mümkün idi və xüsusi ox stilləri və əlaqə üslubları ilə uyğundur.

BoxStyles artıq keçmədən çağırılır mutasiya_aspect parametr¶

Mutasiya aspektini indi sənətkar özü idarə edir. Buna görə mutasiya_aspect BoxStyle._Base .__ call__ parametri köhnəlmişdir və bu parametr tələb olunmaması üçün xüsusi boxstyles tətbiq olunmalıdır (geri uyğunluğu üçün 1-ə uyğun olaraq parametr olaraq buraxıla bilər).

ContourLabeler.get_label_coords istifadəsizdir is

Daxili köməkçi sayılır.

Line2D və Patch artıq təkrarlanan validJoin and validCap ¶

Joinstyle və capstyles-in təsdiqlənməsi indi rcsetup-da mərkəzləşdirilmişdir.

Set_picker vasitəsi ilə Line2D-nin seçimini təyin etmək əvvəlcədən qeyd olunmayıb¶

Bu, Matplotlib 3.3.0-da tətbiq olunan köhnəlməni ləğv edir.

MarkerStyle dəyişməz hesab olunur

MarkerStyle.set_fillstyle () və MarkerStyle.set_marker () köhnəlmişdir. Bunun əvəzinə müvafiq parametrlərlə yeni bir MarkerStyle yaradın.

MovieWriter.cleanup istifadəsizdir ¶

Təmizləmə məntiqi artıq MovieWriter.finish-də tamamilə tətbiq olunur. Üçüncü tərəf film müəllifləri də müvafiq təmizlik məntiqini oraya köçürməlidirlər, çünki gələcəkdə əvəzlənmiş təmizlənmələr artıq çağırılmayacaqdır.

Minimum enmə parametri / TextArea xassəsi ¶

offsetbox.TextArea sanki özünü göstərdi minimum enmə Matplotlib 1.3-dən bəri hər zaman True (təyin olunduğu dəyərdən asılı olmayaraq) olduğundan parametr / xassə köhnəlir.

Rəng çarxı, eşlənə bilən oxlar mövcud oxlardan fərqli olduqda xəbərdarlıq edir¶

Hal-hazırda, Figure.colorbar və pyplot.colorbar rəng çubuğunu yerləşdirmək üçün cari Axes-dan boşluğu oğurlayır. Gələcək bir versiyada əvəzinə xəritənin baltalarından yer oğurlayacaqlar. Bu dəyişikliyə hazırlaşarkən, Figure.colorbar və pyplot.colorbar, cari Oxlar eşlənənlərin Oxları ilə eyni olmadıqda, artıq bir xəbərdarlıq verir.

Colorbar sənədləri¶

Matplotlib.colorbardakı aşağıdakı qlobal maddələr köhnəlmişdir: colorbar_doc, colormap_kw_doc, make_axes_kw_doc.

ColorbarPatch və colorbar_factory köhnəlmişdir

Bütün müvafiq funksiyalar Colorbar sinfinə köçürülmüşdür.

Backend deprecations dep

  • FigureCanvasBase.get_window_title və FigureCanvasBase.set_window_title köhnəlmişdir. Piplot istifadə edirsinizsə, FigureManager-da müvafiq metodlardan və ya yerləşdirmə zamanı GUI-yə məxsus metodlardan istifadə edin.
  • The yenidən ölçmə_sayt FigureCanvasTk üçün parametr heç vaxt daxili istifadə edilməmişdir və köhnəlmişdir. Tədbirlərin ölçüsünü dəyişdirmək üçün Tk səviyyəli xüsusi hadisə işləyiciləri, məsələn, istifadə edərək bir FigureCanvasTk-a əlavə edilə bilər. get_tk_widget (). bind ('& ltConfigure & gt',. True).
  • ToolManager istifadə edərkən səhv bir şey etməyən FigureManagerBase-in key_press və button_press üsulları, hadisənin self.canvas.callbacks.process (event.name, event) vasitəsilə birbaşa CallbackRegistry-ə ötürülməsi lehinədir.
  • RendererAgg.get_content_extents və RendererAgg.tostring_rgba_minimized köhnəlmişdir.
  • backend_pgf.TmpDirCleaner istifadəsizdir, əvəz olunmur.
  • GraphicsContextPS istifadəsizdir. PostScript arxa tərəfi artıq GraphicsContextBase istifadə edir.

Wx backend təmizləmələri¶

The mənşə _FigureCanvasWxBase.gui_repaint parametrinin əvəzedilmədən istifadəsi dayandırıldı gui_repaint indi wx göstəricisi ilə istifadə edildiyi vəziyyəti avtomatik olaraq aşkar edir.

NavigationToolbar2Wx.get_canvas metodu lazım olduqda birbaşa bir kətan (FigureCanvasWxAgg (çərçivə, -1, rəqəm)) hazırlayır.

Print_ & ltfmt & gt metodları üçün istifadə olunmamış mövqe parametrləri köhnəlmişdir

Tuval alt sinifləri tərəfindən tətbiq olunan print_ & ltfmt & gt metodlarından heç biri birincisindən (çıxış fayl adı və ya fayl kimi) başqa mövqeləri dəlilləri istifadə etmədiyi üçün bu əlavə parametrlər köhnəlmişdir.

The dpi FigureCanvas.print_foo printerlərinin parametri köhnəlmişdir¶

Savefig maşınları DPI rəqəmini istədiyiniz dəyərə gətirməklə məşğul idi, buna görə print_foo birbaşa oradan oxuya bilər. Keçmir dpi print_foo to savefig-ə ötürülən istifadə olunmamış parametrlərin daha aydın aşkarlanmasına imkan verir.

Baytların FT2Font.set_text-ə ötürülməsi ¶

. köhnəlir, əvəzinə str keçin.

Ps.useafm mətn mətninə görə ləğv edildi

Yalnız standart PostScript şriftlərindən istifadə edərək mətn mətninin çıxarılması bir müddətdir pozulmuşdur (say # 18722). Matplotlib 3.5-də rcParams [& quotps.useafm & quot] ayarının (varsayılan: Yanlış) matşet üzərində heç bir təsiri olmayacaqdır.

MathTextParser (& quotbitmap & quot) köhnəlmişdir

Əlaqələndirilmiş MathtextBackendBitmap, MathTextParser.to_mask, MathTextParser.to_rgba, MathTextParser.to_png və MathTextParser.get_depth əlaqəli API-lər də köhnəlmişdir.

Mətn sətrini şəklə çevirmək üçün birbaşa mətni boş bir şəklə çəkin və mətnləri şəkillərə çevirin bölməsində göstərildiyi kimi sıx bir qutudan istifadə edərək rəqəmi saxlayın və ya mathtext.math_to_image istifadə edin.

Math_to_image istifadə edərkən mətn rəngi, məsələn:

və bir RGBA dizisi, məsələn:

Mattext daxili hissələrin köhnəlməsi¶

Əvvəlcə mətn modulu tərəfindən məruz qalmış aşağıdakı API elementləri tətbiq detalları hesab olunur və onlara ümumi giriş istifadəsi dayandırılır:

  • Yazı tipləri və bütün alt sinifləri,
  • FontConstantsBase və bütün alt sinifləri,
  • Düyün və bütün alt siniflər,
  • Gəmi, gəmi,
  • Xəta,
  • Parser,
  • SHRINK_FACTOR, GROW_FACTOR,
  • NUM_SIZE_LEVELS,
  • lateks_to_bakoma, lateks_to_cmex, lateks_to_standart,
  • stix_virtual_fonts,
  • tex2uni.

Müxtəlif mətn köməkçilərinin köhnəlməsi¶

MathtextBackendPdf, MathtextBackendPs, MathtextBackendSvg və MathtextBackendCairo sinifləri, həm də mətn modulundan, eyni zamanda RendererPdf, RendererPS, RendererSVG və RendererCairo-dakı müvafiq .mathtext_parser atributları köhnəlmişdir. MathtextBackendPath sinfi bir mətn ifadəsindəki qlif və düzbucaqlıların siyahısını əldə etmək üçün istifadə edilə bilər və göstəriciyə məxsus məntiq birbaşa göstəricidə həyata keçirilməlidir.

StandardPsFonts.pswriter istifadəsizdir və köhnəlmişdir.

Widget sinif daxili

Bir neçə widget. Widget sinif daxili cihazları özəlləşdirilib və istifadədən çıxarılıb:

  • AxesWidget.cids
  • Button.cnt və Button.observers
  • CheckButtons.cnt və CheckButtons.observers
  • RadioButtons.cnt və RadioButtons.observers
  • Slider.cnt və Slider.observers
  • TextBox.cnt, TextBox.change_observers və TextBox.submit_observers

Göstəricilərdə 3D xüsusiyyətlər properties

Çəkiliş zamanı Renderer-ə yerləşdirilmiş 3D Eksenlərin xüsusiyyətləri artıq ləğv edilmişdir:

Bu atributların hamısı Axes3D vasitəsi ilə mövcuddur, bunlara bütün Artist lərində self.axes vasitəsi ilə daxil olmaq mümkündür.

Renderer Collection3D / Patch3D üçün do_3d_projection metodunun arqumenti ¶

The göstərici Collection3D və Patch3D-də do_3d_projection metodu üçün arqument artıq lazım deyildir və çəkiliş zamanı keçər qüvvədən düşür.

Layihə Line3DCollection üçün çəkmə metodunun arqumenti ¶

The layihə Line3DCollection-da çəkmə metodu üçün arqument köhnəlmişdir. Bunun əvəzinə Line3DCollection.do_3d_projection-a zəng edin.

Plot_surface və plot_wireframe üçün əlavə mövqe parametrləri ¶

X, Y və Z xaricində plot_surface və plot_wireframe üçün mövqeləri parametrlər köhnəlmişdir. Bunun əvəzinə əlavə sənətkar xüsusiyyətlərini açar söz arqumentləri kimi ötürün.

ParazitAxesAuxTransBase sinfi¶

Bu mixin sinfinin funksionallığı əsas ParasiteAxesBase sinfinə köçürülmüşdür. Beləliklə, ParasiteAxesAuxTransBase, ParasiteAxesAuxTrans və parazite_axes_auxtrans_class_factory köhnəlmişdir.

Ümumiyyətlə, parazit Axes yaratmaq üçün HostAxes.get_aux_axes-dən istifadə edilməsi tövsiyə olunur, çünki bu, parazitin host.parasites-ə əl ilə əlavə edilməsi ehtiyacından qənaət edir və onların remove () metodunun düzgün işləməsini təmin edir.

AxisArtist.ZORDER atributu¶

Bunun əvəzinə AxisArtist.zorder istifadə edin.

GridHelperBase etibarsızlığı¶

GridHelperBase.invalidate, GridHelperBase.valid və axislines.Axes.invalidate_grid_helper metodları daxili hesab olunur və köhnəlmişdir.

Sphinext.plot_directive.align ¶

. köhnəlmişdir Bunun əvəzinə docutils.parsers.rst.directives.images.Image.align istifadə edin.

Amortizasiya ilə əlaqəli funksionallıq daxili hesab olunur¶

Matplotlib.cbook.deprecation modulu daxili hesab olunur və ümumi API-dən silinəcəkdir. Bu, matplotlib.cbook, yani matplotlib.cbook.deprecated (), matplotlib.cbook.warn_deprecated (), matplotlib.cbook.MatplotlibDeprecationWarning ve matplotlib.cbook.mplDeprecation.

Lazım gələrsə, xarici istifadəçilər MatplotlibDeprecationWarning-i birbaşa matplotlib ad sahəsindən idxal edə bilərlər. mplDeprecation yalnız MatplotlibDeprecationWarning təxəllüsüdür və artıq istifadə edilməməlidir.

Silinmələr¶

Aşağıdakı köhnəlmiş API-lər silindi:

Davranış qaydaları silindi

  • Eksen və Onurğadakı & quotsmart sərhədləri & quot funksiyası silindi və əlaqəli metodlar silindi.
  • Bir rəng simvolu olan bir simli (məs. 'Cymk') to_rgba_array-a çevirmək artıq dəstəklənmir. Bunun əvəzinə, rənglər bir siyahıda ayrı-ayrılıqda ötürülə bilər (məs. ['C', 'y', 'm', 'k']).
  • Mpl_toolkits.axisartist Locators-dan Yoxdur-a bərabər bir əmsalın qaytarılması yox & quotstandard & quot gənə tapanlarla eyni) və ya eksantist formatlayıcılara (bunlar yox & quotstandard & quot tick Formatters ilə eyni) artıq dəstəklənmir. Bunun əvəzinə 1-ə bərabər bir əmsal keçin.

Modullar¶

  • Matplotlib.testing.disable_internet modulu tamamilə silindi. Bunun əvəzinə pytest-remotedata paketi istifadə edilə bilər.
  • Mpl_toolkits.axes_grid1.colorbar modulu və colorbar tətbiqi matplotlib.colorbar lehinə silindi.

Dərslər, metodlar və atributlar¶

  • Animasiya.MovieWriterRegistry metodları .set_dirty (), .ensure_not_dirty () və .reset_available_writers () heç bir şey etmir və silindi. .Avail () metodu silindi. Mövcud yazıçıların siyahısını almaq üçün .list () istifadə edin.
  • Matplotlib.artist.Artist.eventson və matplotlib.container.Container.eventson atributlarının heç bir təsiri yoxdur və silindi.
  • matplotlib.axes.Axes.get_data_ratio_log silindi.
  • matplotlib.axes.SubplotBase.rowNum əvəzinə ax.get_subplotspec () istifadə edin. rowspan.start.
  • matplotlib.axes.SubplotBase.colNum əvəzinə ax.get_subplotspec (). colspan.start istifadə edin.
  • matplotlib.axis.Axis.set_smart_bounds və matplotlib.axis.Axis.get_smart_bounds silindi.
  • matplotlib.colors.DivergingNorm adı dəyişdirilərək TwoSlopeNorm olaraq dəyişdirildi.
  • matplotlib.figure.AxesStack silindi.
  • matplotlib.font_manager.JSONEncoder silindi FontManager nümunəsini atmaq üçün font_manager.json_dump istifadə edin.
  • Matplotlib.ft2font.FT2Image metodları .as_array (), .as_rgba_str (), .as_str (), .get_height () və .get_width () silindi.FT2Image-i işlətmədən əvvəl np.asarray ilə bir NumPy massivinə çevirin.
  • matplotlib.quiver.QuiverKey.quiverkey_doc silindi əvəzinə matplotlib.quiver.QuiverKey .__ init __.__ doc__ istifadə edin.
  • matplotlib.spines.Spine.set_smart_bounds və matplotlib.spines.Spine.get_smart_bounds silindi.
  • matplotlib.testing.jpl_units.UnitDbl.checkUnits silindi, əvəzinə self.allowed olmayan istifadə vahidləri silindi.
  • İstifadə olunmayan matplotlib.ticker.Locator.autoscale metodu silindi (əvəzinə ox limitlərini Locator.view_limits-ə keçir). Bundan əlavə, Locator.autoscale, AutoDateLocator.autoscale, RRuleLocator.autoscale, RadialLocator.autoscale, ThetaLocator.autoscale və YearLocator.autoscale üsulları da silindi.
  • matplotlib.transforms.BboxBase.is_unit silindi, ehtiyac olduqda Bbox ölçülərini yoxlayın.
  • matplotlib.transforms.Affine2DBase.matrix_from_values ​​(.) istifadəsi silindi (məsələn) bunun əvəzinə Affine2D.from_values ​​(.) .get_matrix ().
  • matplotlib.backend_bases.FigureCanvasBase.draw_cursor silindi.
  • matplotlib.backends.backend_gtk.ConfigureSubplotsGTK3.destroy və matplotlib.backends.backend_gtk.ConfigureSubplotsGTK3.init_window metodları silindi.
  • matplotlib.backends.backend_gtk.ConfigureSubplotsGTK3.window xüsusiyyəti silindi.
  • matplotlib.backends.backend_macosx.FigureCanvasMac.invalidate silindi.
  • matplotlib.backends.backend_pgf.RendererPgf.latexManager silindi.
  • matplotlib.backends.backend_wx.FigureFrameWx.statusbar, matplotlib.backends.backend_wx.NavigationToolbar2Wx.set_status_bar və matplotlib.backends.backend_wx.NavigationToolbar2Wx.statbar silindi. Vəziyyət çubuğunu standart wx metodlarını (frame.GetStatusBar () və toolbar.GetTopLevelParent (). GetStatusBar ()) çağıraraq almaq olar.
  • matplotlib.backends.backend_wx.ConfigureSubplotsWx.configure_subplots və matplotlib.backends.backend_wx.ConfigureSubplotsWx.get_canvas silindi.
  • mpl_toolkits.axisartist.grid_finder.GridFinderBase silindi, bunun əvəzinə GridFinder istifadə edin.
  • mpl_toolkits.axisartist.axis_artist.BezierPath əvəzinə istifadə yamaları.PathPatch istifadə silindi.

Funksiyalar¶

  • matplotlib.backends.backend_pgf.repl_escapetext və matplotlib.backends.backend_pgf.repl_mathdefault silindi.
  • matplotlib.checkdep_ps_distiller silindi.
  • matplotlib.cm.revcmap silindi, bunun əvəzinə Colormap.reversed istifadə edin.
  • matplotlib.colors.makeMappingArray silindi.
  • matplotlib.compare_versions əvəzinə distutils.version.LooseVersion s müqayisəsi istifadə edildi.
  • matplotlib.dates.mx2num silindi.
  • matplotlib.font_manager.createFontList silindi font_manager.FontManager.addfont artıq bir şrifti müəyyən bir yolda qeyd etmək üçün mövcuddur.
  • matplotlib.get_home silindi, bunun əvəzinə standart kitabxanadan istifadə edin.
  • matplotlib.mlab.apply_window və matplotlib.mlab.stride_repeat silindi.
  • matplotlib.rcsetup.update_savefig_format silindi, bunun əvəzi 'png' ilə əvəzlənən 'avtomatik'.
  • matplotlib.rcsetup.validate_animation_writer_path silindi.
  • matplotlib.rcsetup.validate_path_exists yerinə os.path.exists və ya pathlib.Path.exists istifadə silindi.
  • matplotlib.style.core.is_style_file və matplotlib.style.core.iter_style_files silindi.
  • matplotlib.testing.is_called_from_pytest silindi.
  • mpl_toolkits.mplot3d.axes3d.unit_bbox silindi, bunun əvəzinə Bbox.unit istifadə edin.

Arqumentlər¶

  • Axes.Axes.axis-ə birdən çox mövqeli arqumentin ötürülməsi artıq bir səhv doğuracaqdır.
  • & Quotrange & quot-a keçmək whis Axes.boxplot və cbook.boxplot_stats parametrləri, bütün məlumat aralığını & quot demək & quot; artıq dəstəklənmir.
  • Skalyarları harada axes.Axes.fill_between və axes.Axes.fill_betweenx parametrləri artıq qəbul edilmir və uyğun olmayan ölçülər indi bir ValueError artırır.
  • The verts Axes.scatter parametri istifadəsi silindi marker əvəzinə.
  • The kiçik Axis.set_ticks və SecondAxis.set_ticks parametrləri indi yalnız açar sözdür. , scale.LinearScale və scale.SymmetricalLogScale indi hər hansı bir gözlənilməz açar söz arqumenti konstruktorlarına ötürülərsə, səhv edir.
  • The renderer Figure.tight_layout parametri silindi, bu üsul artıq həmişə Şəkildə önbelleğe alınan göstərici nümunəsini istifadə edir.
  • The axtarış yeri mpl_toolkits.axes_grid1.axes_grid.CbarAxesBase.colorbar parametrinin sinonimi lehinə silindi gənələr (əvvəllər mövcud idi və matplotlib.colorbar ilə uyğundur).
  • The switch_backend_warn matplotlib.test parametrinin heç bir təsiri yoxdur və silindi.
  • The quru müxtəlif FigureCanvas * .print_ * metodlarına parametr silindi.

RcParams¶

  • Datapath rcParam silindi. Bunun əvəzinə matplotlib.get_data_path istifadə edin.
  • Mpl_toolkits.legacy_colorbar rcParam heç bir təsiri yoxdur və silindi.
  • RcParams [& quotboxplot.whiskers & quot] (varsayılan: 1.5) & quot & quot & quot olaraq ayarlamaq artıq etibarlı deyil, bunun əvəzinə 0, 100 qoyun.
  • RcParams [& quotsavefig.format & quot] (varsayılan: 'png') & quotauto & quot olaraq ayarlanması artıq bunun yerinə etibarlı istifadə & quotpng & quot deyil.
  • RcParams [& quottext.hinting & quot] (varsayılan: 'force_autohint') yalan və ya doğru olaraq ayarlanması artıq etibarlı deyil və müvafiq olaraq & quotauto & quot və ya & quotnone & quot olaraq ayarlayın.

Sample_data çıxarılması¶

Aşağıda göstərilən nümunə verilənlər dəstləri silindi. Nümayiş məqsədləri üçün təklif olunan əvəzetmələr mötərizədə verilmişdir.

  • Yoxdur_vs_nearest-pdf.png,
  • aapl.npz (goog.npz istifadə edin),
  • ada.png, grace_hopper.png (grace_hopper.jpg istifadə edin),
  • ct.raw.gz (s1045.ima.gz istifadə edin),
  • damodata.csv (msft.csv istifadə edin).

İnkişaf dəyişiklikləri¶

Python və asılılıqların minimum dəstəklənən versiyalarına qədər artırın¶

Maptlotlib 3.4 üçün minimum dəstəklənən versiyalar çarpdırılır:

Asılılıq mpl3.3 dəq mpl3.4 dəq
Piton 3.6 3.7
tarix 2.1 2.7
səssiz 1.15 1.16
tökmək 2.0.3 2.2.1

Qhull build-or-sdist vaxtında yükləndi¶

FreeType-a bənzər bir şəkildə Qhull indi quruluş zamanı və ya sdist yaradılandan sonra yüklənir. Sistem Qhull ilə əlaqələndirmək üçün, setup.cfg faylında system_qhull seçimini True olaraq təyin edin. Qeyd edək ki, Matplotlib artıq Qhull (qhull_r) üçün yenidən abunəçi versiyasını tələb edir.

FigureBase sinfi əlavə edildi və Şəkil sinfi uşaq etdi made

Yeni subfigure xüsusiyyəti, rəqəmin yenidən təşkil olunmasına səbəb oldu.Şəkil sinfi, belə ki, yeni figure.SubFigure sinfi bir rəqəmin bütün imkanlarına sahib ola bilər.

Figure.Figure sinfi indi figure.FigureBase-in rəqəmsal bir alt sinifidir, burada figure.FigureBase rəqəm səviyyəsində rəssam əlavə etmə qaydalarını və rəqəm. Figur alt sinif yalnız xarici fiqura xas olan xüsusiyyətləri ehtiva edir.

Yenisinin olduğunu unutmayın transSubfigure alt şəkil ilə əlaqəli çevrilmə. Bu çevrilmə bir şəkil nümunəsi üçün də mövcuddur və bərabərdir şəkil dəyişdirin bu vəziyyətdə, obyektləri ya ana rəqəmə, ya da alt formalardan birinə yerləşdirmək istəyən transformasiya yığını istifadə edən kod istifadə etməlidir. transSubfigure.


PyNIO Versiyası 1.4.3 - 30 dekabr 2015

  • Yenisi əlavə edildi NioFile Ölçü adını yeganə arqument kimi götürən və ölçü məhdudiyyətsiz bir qeyd ölçüsü olduğu təqdirdə True və əksinə False olduqda True qaytaran 'limitsiz' adlanan Boole üsulu.
  • Əvvəlcədən təyin olunmuş GRIB1 ızgarası 242 ilə əlaqəli bir səhv düzəldildi. Yanlış Dx və Dy dəyərləri var idi.
  • Kanada Meteorologiya Mərkəzi məlumatlarının həm GRIB1 həm də GRIB2 formatında qlobal şəbəkələrin başlanğıc və bitmə uzunluğunun eyni dəyərlərə uyğun yerləşdiyi bir səhv düzəldildi. Artıq uzunluq koordinatları 360 dərəcəni əhatə etmək üçün düzgün hesablanır.
  • Əvvəllər NOAA Proqnozlaşdırma Sistemləri Laboratoriyası adı verilən və indi Yer Sistemi Tədqiqat Laboratoriyasının Qlobal Sistemlər Bölməsi adlandırılan 59 nömrəli GRIB1 masalarının işlənməsi yaxşılaşdırıldı. Standart NCEP cədvəlləri artıq mərkəz 59-dan başqa bilinməyən cədvəl versiyaları üçün mümkün olduqda istifadə olunur.
  • Parametr 0 üçün bir giriş ehtiva edən istifadəçi tərəfindən təyin olunan GRIB1 parametri cədvəllərində bir problem düzəldildi, bu parametr heç vaxt parametr nömrəsi olaraq istifadə edilmir, ancaq görünəndə masa oxu kodunu qarışdırırdı.
  • GRIB2 ilə problem həll edildi parametr_disiplin_və_ kateqoriya bəzi hallarda səhv məlumat ehtiva etməsinə səbəb olan dəyişən atribut.
  • Xüsusilə Avropada peyk məhsulları üçün istifadə olunan GRIB2 şablonu 4.31 üçün dəstək əlavə edildi.
  • GRIB1 və GRIB2 Mercator ızgaraları üçün enlik dəyərlərinin hesablanması ilə bağlı problem həll edildi.

Missouri Yolları

Sitat:
İstinad_Məlumatı:
Yaradan: Missouri Nəqliyyat Departamenti
Nəşr_Tarixi: 2002
Başlıq: Missouri Yolları
Yerleşim_Data_Presentation_Form: vektor rəqəmsal məlumatlar
Onlayn_Bağlantı: & lthttp: //msdis.missouri.edu/>
Təsvir:
Xülasə:
MoDOT karayolunun əhatə dairəsi Dinamik Seqmentasiya modelinə əsaslanır. Dinamik Seqmentasiya marşrutlardan və hadisələrdən istifadə edərək xətti xüsusiyyətləri modelləşdirir, çoxsaylı atribut dəstini xətti bir xüsusiyyətin istənilən hissəsinə bağlayır. ARC xüsusiyyət sinfi, Dinamik Seqmentasiya modellərinin və ya marşrut sistemlərinin qurulduğu əsas xətti infrastrukturu təşkil edir. NODES, ARCS-nin son nöqtələrini və kəsişmələrini göstərir. 'Düyündən' qövsün ilk təpəsidir, 'Düyünə' son təpədir. Birlikdə qövs istiqamətini təyin edirlər. Arc-node topologiyası Dinamik Seqmentasiya modellərinin və ya marşrut sistemlərinin əlaqəsini müəyyənləşdirir. Marşrut sistemləri əsas qövs nodu topologiyasını dəyişdirmədən qurulur. Marşrut bir şəhər küçəsi və ya magistral yol kimi tək bir xətti xüsusiyyəti təmsil edir. Marşrutlar bir və ya daha çox qövsdən və ya qövs hissələrindən ibarət olan xətti xüsusiyyətlərdir, məsələn, magistral bir neçə bağlı qövsdən ibarət ola bilər. Dinamik Seqmentləşdirmə məqsədləri üçün marşrut sadəcə ölçü ölçüləri əlavə edilmiş xətti bir xüsusiyyətdir. Hər bir marşrut bir ölçmə sistemi, başlanğıc dəyərindən ibarət olan bir xətti metod və marşrut boyunca digər məsafələri təsvir edən məsafəni təsvir edir. Tədbirlər marşrutun hissələrini təsvir edən məlumatları tapmaq üçün istifadə olunur. Marşrutlardakı məlumatlar hadisələrdən istifadə edərək modelləşdirilir. Qəzalar, işarələr, funksional təsnifat, səki vəziyyəti, səki növü kimi hadisə məlumatları təməli marşrut sistemi olan Dinamik Seqmentasiya modelinə əsaslanır.

Dövlət sistem şəbəkəsi (IS, US, MO, RT) 1980-DIME məlumatlarından qaynaqlanır və daha sonra ABŞ Sayım Bürosundan 1995 TIGER sənədləri ilə yeniləndi. Hal-hazırda əhatə planı, GPS, DOQQ və mahal və şəhər xəritələrindən istifadə edərək aylıq yenilənir.

Məqsəd:

Ümumiyyətlə kobud coğrafi və ətraf mühit təhlili üçün istifadə olunur. Dinamik Seqmentasiya modeli, daha spesifik təhlil və ya modelləşdirməyə imkan verən xüsusi məlumatları və ya hadisələri (qəzalar, səki növü, sürət həddi, işarələr və s.) Marşrut və ya səyahət yolu boyunca yerlərə istinad etmək üçün istifadə olunur.
Məzmunun vaxtı:
Saat_Mövzusu_ Məlumat:
Çox Tarixlər / Times:
Bir_Tarix / Saat:
Təqvim_tarixi: 2000
Currentness_Reference: nəşr tarixi
Vəziyyət:
Tərəqqi: İşdə
Baxım_və_yeniləmə_tezlik: Aylıq
Mekansal_Domain:
Bağlama_Kordinatları:
Qərb_Bağlayıcı_Kordinat: -95.771478
Şərq_Bağlayıcı_Kordinat: -88.907056
Şimal_Bağlama_Kordinat: 40.620186
Cənubi_Bağlayıcı_Kordinat: 35.963203
Açar sözlər:
Mövzu:
Mövzu_Açar sözlər_Tezaus: yox
Mövzu_Açar söz: Yol
Mövzu_Açar söz: nəqliyyat
Mövzu_Açar söz: marşrut
Mövzu_Açar söz: magistral yollar
Yer:
Yer_Açar söz: Missouri
Giriş_Məhdudiyyətlər: yox
İstifadə_Məhdudiyyətlər:
Bu məlumatların məkan həlli ümumiyyətlə 1: 100,000 olaraq qəbul edilir, baxmayaraq ki yeniləmələr tez-tez daha dəqiq vasitələrdən istifadə olunur (məsələn, GPS, DOQQ).
Əlaqə_nöqtəsi:
Əlaqə məlumatı:
Əlaqə_Təşkilat_İlk:
Əlaqə_Təşkilat: Missouri Nəqliyyat Departamenti
Əlaqə_İnsan: Steve Vance
Əlaqə_Mövqeyi: Baş CİS Mütəxəssisi
Əlaqə ünvanı:
Ünvan_ növü: fiziki ünvan
Ünvan: 2217 Müqəddəs Məryəm Bulvarı
Şəhər: Jefferson City
Dövlət_Və yaProvince: MO
Poçt kodu: 65109
Ölkə: ABŞ
Əlaqə_Səs_Telefon: 573-526-2671
Əlaqə_Səs_Telefon: 573-526-2671
Əlaqə_Elektronik_Mail_Ünvan: [email protected]
Əlaqə_Elektronik_Mail_Ünvan: [email protected]
Yerli_Data_Set_En Environment:
Microsoft Windows NT Versiya 4.0 (Qurmaq 1381) Service Pack 6 ESRI ArcCatalog 8.2.0.700

Ətraflı Təsviri:
Entity_Type:
Entity_Type_Label: statecovcl2.aat
Entity_Type_Definition:
'.Aat' (Arc Atribut Cədvəli) ARCS haqqında təsviri məlumatları saxlayır. Əhatə dairəsində hər bir ARC üçün '.aat' -da bir qeyd var. Qeyd hər bir ARC üçün saxlanılan daxili sıra nömrəsi ilə xüsusiyyətlə əlaqələndirilir.
Atribut:
Attribute_Label: FID
Atribut_Tərifi: Daxili xüsusiyyət nömrəsi.
Attribute_Definition_Source: ESRI
Attribute_Domain_Values:
Təmsil olunmayan_Domain:
Avtomatik olaraq yaradılan ardıcıl unikal tam ədədlər.
Atribut:
Attribute_Label: Forma
Atribut_Tərifi: Xüsusiyyət həndəsi.
Attribute_Definition_Source: ESRI
Attribute_Domain_Values:
Təmsil olunmayan_Domain: Xüsusiyyətləri təyin edən koordinatlar.
Atribut:
Attribute_Label: Yemək #
Atribut_Tərifi: Düyünün daxili sıra nömrəsi.
Attribute_Definition_Source: ESRI
Attribute_Domain_Values:
Təmsil olunmayan_Domain: Avtomatik olaraq yaradılan bütün nömrələr.
Atribut:
Attribute_Label: TNODE #
Atribut_Tərifi: Düyünün daxili sıra nömrəsi.
Attribute_Definition_Source: ESRI
Attribute_Domain_Values:
Təmsil olunmayan_Domain: Avtomatik olaraq yaradılan bütün nömrələr.
Atribut:
Attribute_Label: LPOLY #
Atribut_Tərifi:
Əhatə dairəsi çoxbucaqlı deyilsə, sol poliqonun daxili sıra nömrəsi 0 olaraq təyin edilmişdir.
Attribute_Definition_Source: ESRI
Attribute_Domain_Values:
Təmsil olunmayan_Domain: Avtomatik olaraq yaradılan bütün nömrələr.
Atribut:
Attribute_Label: SORĞU #
Atribut_Tərifi:
Əhatə dairəsi çoxbucaqlı deyilsə, sağ çoxbucağın daxili sıra nömrəsi 0 olaraq təyin edilmişdir.
Attribute_Definition_Source: ESRI
Attribute_Domain_Values:
Təmsil olunmayan_Domain: Avtomatik olaraq yaradılan bütün nömrələr.
Atribut:
Attribute_Label: UZUNLUQ
Atribut_Tərifi: Daxili əhatə dairələrində xüsusiyyət uzunluğu.
Attribute_Definition_Source: ESRI
Attribute_Domain_Values:
Təmsil olunmayan_Domain: Avtomatik olaraq yaradılan müsbət real rəqəmlər.
Atribut:
Attribute_Label: STATECOVCL2 #
Atribut_Tərifi:
ARC sənədindəki qövsün daxili sıra nömrəsi (yəni qeyd nömrəsi).
Attribute_Definition_Source: ESRI
Attribute_Domain_Values:
Təmsil olunmayan_Domain:
Avtomatik olaraq yaradılan ardıcıl unikal tam ədədlər.
Atribut:
Attribute_Label: STATECOVCL2-ID
Atribut_Tərifi: İstifadəçi tərəfindən təyin olunmuş xüsusiyyət kimliyi.
Attribute_Definition_Source: ESRI
Atribut:
Attribute_Label: ARCSEGMENT_ID
Atribut_Tərifi: Unikal xüsusiyyət nömrəsi hesablanmışdır.
Attribute_Definition_Source: MoDOT
Atribut:
Attribute_Label: DƏYİŞ_TYPE
Atribut:
Attribute_Label: XATA_DESCRIPTIO
Atribut:
Attribute_Label: DIST
Atribut_Tərifi: MoDOT rayon nömrəsi.
Attribute_Definition_Source: MoDOT
Atribut:
Attribute_Label: CNTY_NO
Atribut_Tərifi: MoDOT ilçe nömrəsi.
Attribute_Definition_Source: MoDOT
Atribut:
Attribute_Label: RTE_DESG
Atribut_Tərifi:
Təyinat, səyahət yolunun növünü müəyyənləşdirmək üçün istifadə olunan iki və ya üç hərf kodudur. IS - Dövlətlərarası: ABŞ - ABŞ nömrəli marşrutlar: MO - Missouri nömrəli marşrutlar: RT - Missouri məktublu marşrutlar: LP - Ticarət döngəsi (dövlətlərarası): BU - Ticarət dövrü (dövlətlərarası): AL - Alternativ marşrutlar: SP - Spur: RV - Geri çevrilə bilən: VEYA - Xarici yol: RP - Rampa (dərəcəli olmayan kəsişmə): CO - Wye Ayağı və digər dərəcəli əlaqələr üçün bağlayıcı: RA - İstirahət sahəsi: WS - Ağırlıq stansiyası: CRD - İlçe yolu: CST - Şəhər Küçəsi: ALY - Xiyaban: PVT - Xüsusi Yol
Attribute_Definition_Source: MoDOT
Atribut:
Attribute_Label: Marşrut
Atribut_Tərifi:
Əsas marşrutun uyğun adı. ** DİQQƏT ** Dövlət sistemi üçün əsas marşrut, ən yüksək rütbəli Marşrut Təyinatı (Rte_Desg) ilə müəyyən edilir, sonrakı ədədi sonra əlifba sırası ilə.
Attribute_Definition_Source: MoDOT
Atribut:
Attribute_Label: DİR
Atribut_Tərifi:
İstiqamət bir səyahət yolunda hərəkət istiqamətini göstərir (S, N, E, W). Dövlət tərəfindən saxlanılan müəssisələrdə (dövlət sistemi) səyahət istiqaməti marşrut və ya hərəkət nömrəsi ilə müəyyən edilir, EVEN nömrəli səyahət yolları Şərq / Qərb, ODD nömrəli səyahət yolları isə Şimal / Cənub olaraq təyin edilir. ** DİQQƏT ** İstiqamət yalnız ARC xüsusiyyətindəki bölünmüş obyektlərdə keçərlidir.
Attribute_Definition_Source: MoDOT
Atribut:
Attribute_Label: ATTEMP
Atribut:
Attribute_Label: RRD
Atribut:
Attribute_Label: RTLENGTH
Atribut:
Attribute_Label: TLID
Atribut:
Attribute_Label: FEDIRP
Atribut:
Attribute_Label: FENAME2
Atribut:
Attribute_Label: FETYPE2
Atribut:
Attribute_Label: Yoxlamaq2
Atribut:
Attribute_Label: Yoxlama3
Atribut:
Attribute_Label: FEDIRS
Atribut:
Attribute_Label: CFCC
Atribut:
Attribute_Label: TWAY_NAME
Atribut:
Attribute_Label: MODOTSİM
Atribut:
Attribute_Label: ƏLAVƏ
Atribut:
Attribute_Label: COUNTY_NUMBER
Atribut_Tərifi: İlçe nömrəsi
Attribute_Definition_Source: MoDOT
Atribut:
Attribute_Label: SECTIONS_ID
Atribut:
Attribute_Label: OFSET
Atribut_Tərifi:
Yalnız Xarici Yollara aiddir - ofset istiqaməti ana marşrut tərəfindən müəyyən edilir. Əgər ana istiqamət Şimal / Güneydirsə, ofset istiqaməti Şərq / Qərbdir və Şərq / Qərb olan ana marşrutlar üçün ofset Şimal / Cənub olacaqdır.
Attribute_Definition_Source: MoDOT
Ətraflı Təsviri:
Entity_Type:
Entity_Type_Label: statecovcl2.nat
Entity_Type_Definition:
'.Nat' (Düyün Atribut Cədvəli) NODES haqqında təsviri məlumatları saxlayır. Əhatə dairəsində hər NODE üçün '.nat' -da bir qeyd var. Qeyd, düyünün daxili ardıcıllığı ilə NODE ilə əlaqələndirilir.
Atribut:
Attribute_Label: FID
Atribut_Tərifi: Daxili xüsusiyyət nömrəsi.
Attribute_Definition_Source: ESRI
Attribute_Domain_Values:
Təmsil olunmayan_Domain:
Avtomatik olaraq yaradılan ardıcıl unikal tam ədədlər.
Atribut:
Attribute_Label: Forma
Atribut_Tərifi: Xüsusiyyət həndəsi.
Attribute_Definition_Source: ESRI
Attribute_Domain_Values:
Təmsil olunmayan_Domain: Xüsusiyyətləri təyin edən koordinatlar.
Atribut:
Attribute_Label: ARC #
Atribut_Tərifi:
Düyün yerində birləşdirən yaylardan birinin daxili sıra nömrəsi.
Attribute_Definition_Source: ESRI
Atribut:
Attribute_Label: STATECOVCL2 #
Atribut_Tərifi: Düyünün daxili sıra nömrəsi.
Attribute_Definition_Source: ESRI
Attribute_Domain_Values:
Təmsil olunmayan_Domain:
Avtomatik olaraq yaradılan ardıcıl unikal tam ədədlər.
Atribut:
Attribute_Label: STATECOVCL2-ID
Atribut_Tərifi:
İstifadəçi tərəfindən təyin olunmuş xüsusiyyət kimliyi. Əvvəlcə bir NAT yaradıldıqda, qovşaq identifikatorları avtomatik olaraq düyün & # 8217s daxili sıra nömrəsinə bərabər olaraq təyin edilir.
Attribute_Definition_Source: ESRI
Atribut:
Attribute_Label: TW_INTERSECT
Atribut_Tərifi: Hesablanmış unikal nömrə
Attribute_Definition_Source: MoDOT
Atribut:
Attribute_Label: X-COORD
Atribut_Tərifi: Uzunluq hesablandı
Attribute_Definition_Source: MoDOT
Atribut:
Attribute_Label: Y-COORD
Atribut_Tərifi: Hesablanmış enlik
Attribute_Definition_Source: MoDOT
Atribut:
Attribute_Label: DƏYİŞ_TYPE
Ətraflı Təsviri:
Entity_Type:
Entity_Type_Label: statecovcl2.ratall
Entity_Type_Definition:
'Route.All' xüsusiyyət sinfi, ilçe əsaslı log-mile sistemindən istifadə edərək qurulmuş bir Dinamik Seqmentasiya modeli və ya marşrut sistemidir. '.Ratall' (ROUTE ATTRIBUTE TABLE.ALL) mahal mərkəzli log-mil sisteminin ROUTES-ləri haqqında təsviri məlumatları saxlayır. Xüsusiyyət sinifindəki hər ROUTE üçün '.ratall' -da bir qeyd var. Qeyd hər bir ROTUE üçün saxlanılan daxili sıra nömrəsi ilə xüsusiyyətlə əlaqələndirilir.
Atribut:
Attribute_Label: FID
Atribut_Tərifi: Daxili xüsusiyyət nömrəsi.
Attribute_Definition_Source: ESRI
Attribute_Domain_Values:
Təmsil olunmayan_Domain:
Avtomatik olaraq yaradılan ardıcıl unikal tam ədədlər.
Atribut:
Attribute_Label: Forma
Atribut_Tərifi: Xüsusiyyət həndəsi.
Attribute_Definition_Source: ESRI
Attribute_Domain_Values:
Təmsil olunmayan_Domain: Xüsusiyyətləri təyin edən koordinatlar.
Atribut:
Attribute_Label: BÜTÜN #
Atribut_Tərifi: Marşrutun daxili xüsusiyyət nömrəsi.
Attribute_Definition_Source: ESRI
Attribute_Domain_Values:
Təmsil olunmayan_Domain:
Avtomatik olaraq yaradılan ardıcıl unikal tam ədədlər.
Atribut:
Attribute_Label: BÜTÜN şəxsiyyət
Atribut_Tərifi: Marşrutun istifadəçi tərəfindən təyin olunmuş xüsusiyyət nömrəsi.
Attribute_Definition_Source: ESRI
Atribut:
Attribute_Label: ƏLAVƏ
Atribut:
Attribute_Label: ARCLENGTH
Atribut_Tərifi:
Marşrutun əhatə dairələrindəki uzunluğu. Bu, hər bir marşrutu təşkil edən qövslərin və qismən qövslərin uzunluğunun cəmlənməsi ilə hesablanır. Arc Command 'RouteStats' tərəfindən hesablanır.
Attribute_Definition_Source: ArcInfo
Atribut:
Attribute_Label: Ölçmə
Atribut_Tərifi:
Marşrut ölçülərində marşrutun uzunluğu. Bu, marşrutdakı hər hissənin F-MEAS və T-MEAS fərqlərini toplayaraq hesablanır. Arc Command 'RouteStats' tərəfindən hesablanır.
Attribute_Definition_Source: ArcInfo
Atribut:
Attribute_Label: GEZİLMƏK_İD2
Atribut_Tərifi:
Müəyyən bir marşrutu və ya səyahət yolunu müəyyənləşdirən, qarşılıqlı müstəsna say.
Attribute_Definition_Source: MoDOT
Atribut:
Attribute_Label: CNTY_NO
Atribut_Tərifi: MoDOT ilçe nömrəsi
Attribute_Definition_Source: MoDOT
Atribut:
Attribute_Label: Marşrut
Atribut_Tərifi: Marşrutun və ya səyahət yolunun adı.
Attribute_Definition_Source: MoDOT
Atribut:
Attribute_Label: RTE_DESG
Atribut_Tərifi:
Təyinat, səyahət yolunun növünü müəyyənləşdirmək üçün istifadə olunan iki və ya üç hərf kodudur. IS - Dövlətlərarası: ABŞ - ABŞ nömrəli marşrutlar: MO - Missouri nömrəli marşrutlar: RT - Missouri məktublu marşrutlar: LP - Ticarət döngəsi (dövlətlərarası): BU - Ticarət dövrü (dövlətlərarası): AL - Alternativ marşrutlar: SP - Spur: RV - Geri çevrilə bilən: VEYA - Xarici yol: RP - Rampa (dərəcəli olmayan kəsişmə): CO - Wye Ayağı və digər dərəcəli əlaqələr üçün bağlayıcı: RA - İstirahət sahəsi: WS - Ağırlıq stansiyası: CRD - İlçe yolu: CST - Şəhər Küçəsi: ALY - Xiyaban: PVT - Xüsusi Yol
Attribute_Definition_Source: MoDOT
Atribut:
Attribute_Label: DİR
Atribut_Tərifi:
İstiqamət bir səyahət yolunda hərəkət istiqamətini göstərir (S, N, E, W). Dövlət tərəfindən saxlanılan müəssisələrdə (dövlət sistemi) səyahət istiqaməti marşrut və ya hərəkət nömrəsi ilə müəyyən edilir, EVEN nömrəli səyahət yolları Şərq / Qərb, ODD nömrəli səyahət yolları isə Şimal / Cənub olaraq təyin edilir.
Attribute_Definition_Source: MoDOT
Atribut:
Attribute_Label: DƏYİŞ_TYPE
Atribut:
Attribute_Label: LOWMEASURE
Atribut_Tərifi:
Marşrutda ən aşağı ölçü dəyəri. Arc Command 'RouteStats' tərəfindən hesablanır.
Attribute_Definition_Source: ArcInfo
Atribut:
Attribute_Label: YÜKSƏKLİK
Atribut_Tərifi:
Marşrutda ən yüksək ölçü dəyəri. Arc Command 'RouteStats' tərəfindən hesablanır.
Attribute_Definition_Source: ArcInfo
Atribut:
Attribute_Label: FIRSTSECTION
Atribut_Tərifi:
Marşrutdakı ilk hissənin daxili nömrəsi. Arc Command 'RouteStats' tərəfindən hesablanır.
Attribute_Definition_Source: ArcInfo
Atribut:
Attribute_Label: LƏĞV
Atribut_Tərifi:
Marşrutdakı son hissənin daxili nömrəsi. Arc Command 'RouteStats' tərəfindən hesablanır.
Attribute_Definition_Source: ArcInfo
Atribut:
Attribute_Label: NUMSECTIONS
Atribut_Tərifi:
Marşrutdakı hissələrin sayı. Arc Command 'RouteStats' tərəfindən hesablanır.
Attribute_Definition_Source: ArcInfo
Ətraflı Təsviri:
Entity_Type:
Entity_Type_Label: statecovcl2.rattway
Entity_Type_Definition:
'Route.Tway' xüsusiyyət sinfi, fasiləsiz log-mile sistemi istifadə edərək qurulmuş bir Dinamik Seqmentasiya modeli və ya marşrut sistemidir. '.Rattway' (ROUTE ATTRIBUTE TABLE.TWAY) davamlı log-mil sisteminin ROUTES-ləri haqqında təsviri məlumatları saxlayır. Xüsusiyyət sinifindəki hər ROUTE üçün '.rattway' də bir qeyd var. Qeyd hər bir ROTUE üçün saxlanılan daxili sıra nömrəsi ilə xüsusiyyətlə əlaqələndirilir.
Atribut:
Attribute_Label: FID
Atribut_Tərifi: Daxili xüsusiyyət nömrəsi.
Attribute_Definition_Source: ESRI
Attribute_Domain_Values:
Təmsil olunmayan_Domain:
Avtomatik olaraq yaradılan ardıcıl unikal tam ədədlər.
Atribut:
Attribute_Label: Forma
Atribut_Tərifi: Xüsusiyyət həndəsi.
Attribute_Definition_Source: ESRI
Attribute_Domain_Values:
Təmsil olunmayan_Domain: Xüsusiyyətləri təyin edən koordinatlar.
Atribut:
Attribute_Label: BAKI #
Atribut_Tərifi: Marşrutun daxili xüsusiyyət nömrəsi.
Attribute_Definition_Source: ESRI
Attribute_Domain_Values:
Təmsil olunmayan_Domain:
Avtomatik olaraq yaradılan ardıcıl unikal tam ədədlər.
Atribut:
Attribute_Label: TWAY-ID
Atribut_Tərifi: Marşrutun istifadəçi tərəfindən təyin olunmuş xüsusiyyət nömrəsi.
Attribute_Definition_Source: ESRI
Atribut:
Attribute_Label: Səyahət
Atribut_Tərifi:
Müəyyən bir marşrutu və ya səyahət yolunu müəyyənləşdirən, qarşılıqlı müstəsna say.
Attribute_Definition_Source: MoDOT
Atribut:
Attribute_Label: GEZİLMƏK_İD2
Atribut_Tərifi:
Müəyyən bir marşrutu və ya səyahət yolunu müəyyənləşdirən, qarşılıqlı müstəsna say.
Attribute_Definition_Source: MoDOT
Atribut:
Attribute_Label: RTECHK
Atribut_Tərifi: Marşrutun və ya səyahət yolunun uyğun adı.
Attribute_Definition_Source: MoDOT
Atribut:
Attribute_Label: RTEDSG
Atribut_Tərifi:
Təyinat, səyahət yolunun növünü müəyyənləşdirmək üçün istifadə olunan iki və ya üç hərf kodudur. IS - Dövlətlərarası: ABŞ - ABŞ nömrəli marşrutlar: MO - Missouri nömrəli marşrutlar: RT - Missouri məktublu marşrutlar: LP - Ticarət döngəsi (dövlətlərarası): BU - Ticarət dövrü (dövlətlərarası): AL - Alternativ marşrutlar: SP - Spur: RV - Geri çevrilə bilən: VEYA - Xarici yol: RP - Rampa (dərəcəli olmayan kəsişmə): CO - Wye Ayağı və digər dərəcəli əlaqələr üçün bağlayıcı: RA - İstirahət sahəsi: WS - Ağırlıq stansiyası: CRD - İlçe yolu: CST - Şəhər Küçəsi: ALY - Xiyaban: PVT - Xüsusi Yol
Attribute_Definition_Source: MoDOT
Atribut:
Attribute_Label: OFSET
Atribut_Tərifi:
Yalnız Xarici Yollara aiddir - ofset istiqaməti ana marşrut tərəfindən müəyyən edilir. Əgər ana istiqamət Şimal / Güneydirsə, ofset istiqaməti Şərq / Qərbdir və Şərq / Qərb olan ana marşrutlar üçün ofset Şimal / Cənub olacaqdır.
Attribute_Definition_Source: MoDOT
Atribut:
Attribute_Label: DİR
Atribut_Tərifi:
İstiqamət bir səyahət yolunda hərəkət istiqamətini göstərir (S, N, E, W). Dövlət tərəfindən saxlanılan müəssisələrdə (dövlət sistemi) səyahət istiqaməti marşrut və ya hərəkət nömrəsi ilə müəyyən edilir, EVEN nömrəli səyahət yolları Şərq / Qərb, ODD nömrəli səyahət yolları isə Şimal / Cənub olaraq təyin edilir.
Attribute_Definition_Source: MoDOT
Atribut:
Attribute_Label: Yollar
Atribut:
Attribute_Label: YOLLAR2
Atribut_Tərifi:
Birləşdirilmiş rte_desg, rtechk və dir (Rota Təyinatı, Rota Adı və İstiqamət).
Attribute_Definition_Source: MoDOT
Atribut:
Attribute_Label: RAMPFROM
Atribut_Tərifi: Rampanın yola çıxdığı əsas yol.
Attribute_Definition_Source: MoDOT
Atribut:
Attribute_Label: RAMPTO
Atribut_Tərifi: Rampanın birləşdiyi əsas yol.
Attribute_Definition_Source: MoDOT
Atribut:
Attribute_Label: Yoxlama3
Atribut:
Attribute_Label: Yoxlamaq5
Atribut:
Attribute_Label: DƏYİŞ_TYPE
Atribut:
Attribute_Label: FLIP_ID
Atribut:
Attribute_Label: XATA_DESCRIPTIO
Atribut:
Attribute_Label: RTE_CHK_HIERARCH
Atribut:
Attribute_Label: RAYON
Atribut_Tərifi: Rayon nömrəsi
Attribute_Definition_Source: MoDOT
Atribut:
Attribute_Label: ARCLENGTH
Atribut_Tərifi:
Marşrutun əhatə dairələrindəki uzunluğu. Bu, hər bir marşrutu təşkil edən qövslərin və qismən qövslərin uzunluğunun cəmlənməsi ilə hesablanır. Arc Command 'RouteStats' tərəfindən hesablanır.
Attribute_Definition_Source: ArcInfo
Atribut:
Attribute_Label: Ölçmə
Atribut_Tərifi:
Marşrut ölçülərində marşrutun uzunluğu. Bu, marşrutdakı hər hissənin F-MEAS və T-MEAS fərqlərini toplayaraq hesablanır. Arc Command 'RouteStats' tərəfindən hesablanır.
Attribute_Definition_Source: ArcInfo
Atribut:
Attribute_Label: LOWMEASURE
Atribut_Tərifi:
Marşrutda ən aşağı ölçü dəyəri. Arc Command 'RouteStats' tərəfindən hesablanır.
Attribute_Definition_Source: ArcInfo
Atribut:
Attribute_Label: YÜKSƏKLİK
Atribut_Tərifi:
Marşrutda ən yüksək ölçü dəyəri. Arc Command 'RouteStats' tərəfindən hesablanır.
Attribute_Definition_Source: ArcInfo
Atribut:
Attribute_Label: FIRSTSECTION
Atribut_Tərifi:
Marşrutdakı ilk hissənin daxili nömrəsi. Arc Command 'RouteStats' tərəfindən hesablanır.
Attribute_Definition_Source: ArcInfo
Atribut:
Attribute_Label: LƏĞV
Atribut_Tərifi:
Marşrutdakı son hissənin daxili nömrəsi. Arc Command 'RouteStats' tərəfindən hesablanır.
Attribute_Definition_Source: ArcInfo
Atribut:
Attribute_Label: NUMSECTIONS
Atribut_Tərifi:
Marşrutdakı hissələrin sayı. Arc Command 'RouteStats' tərəfindən hesablanır.
Attribute_Definition_Source: ArcInfo
Atribut:
Attribute_Label: KOD
Ətraflı Təsviri:
Entity_Type:
Entity_Type_Label: statecovcl2.rattwaypos
Atribut:
Attribute_Label: FID
Atribut_Tərifi: Daxili xüsusiyyət nömrəsi.
Attribute_Definition_Source: ESRI
Attribute_Domain_Values:
Təmsil olunmayan_Domain:
Avtomatik olaraq yaradılan ardıcıl unikal tam ədədlər.
Atribut:
Attribute_Label: Forma
Atribut_Tərifi: Xüsusiyyət həndəsi.
Attribute_Definition_Source: ESRI
Attribute_Domain_Values:
Təmsil olunmayan_Domain: Xüsusiyyətləri təyin edən koordinatlar.
Atribut:
Attribute_Label: TWAYPOS #
Atribut_Tərifi: Daxili xüsusiyyət nömrəsi.
Attribute_Definition_Source: ESRI
Attribute_Domain_Values:
Təmsil olunmayan_Domain:
Avtomatik olaraq yaradılan ardıcıl unikal tam ədədlər.
Atribut:
Attribute_Label: TWAYPOS-ID
Atribut_Tərifi: İstifadəçi tərəfindən təyin olunan xüsusiyyət nömrəsi.
Attribute_Definition_Source: ESRI
Atribut:
Attribute_Label: Səyahət
Atribut_Tərifi:
Müəyyən bir marşrutu və ya səyahət yolunu müəyyənləşdirən, qarşılıqlı müstəsna say.
Attribute_Definition_Source: MoDOT
Atribut:
Attribute_Label: GEZİLMƏK_İD2
Atribut:
Attribute_Label: RTECHK
Atribut:
Attribute_Label: RTEDSG
Atribut:
Attribute_Label: OFSET
Atribut:
Attribute_Label: DİR
Atribut:
Attribute_Label: Yollar
Atribut:
Attribute_Label: YOLLAR2
Atribut:
Attribute_Label: RAMPFROM
Atribut:
Attribute_Label: RAMPTO
Atribut:
Attribute_Label: Yoxlama3
Atribut:
Attribute_Label: Yoxlamaq5
Atribut:
Attribute_Label: DƏYİŞ_TYPE
Atribut:
Attribute_Label: FLIP_ID
Atribut:
Attribute_Label: XATA_DESCRIPTIO
Atribut:
Attribute_Label: RTE_CHK_HIERARCH
Atribut:
Attribute_Label: RAYON
Atribut:
Attribute_Label: ARCLENGTH
Atribut:
Attribute_Label: Ölçmə
Atribut:
Attribute_Label: LOWMEASURE
Atribut:
Attribute_Label: YÜKSƏKLİK
Atribut:
Attribute_Label: FIRSTSECTION
Atribut:
Attribute_Label: LƏĞV
Atribut:
Attribute_Label: NUMSECTIONS
Atribut:
Attribute_Label: KOD
Baxış_ Təsvir:
Entity_and_Attribute_Overview:
ARC xüsusiyyət sinfi, Dinamik Seqmentasiya modellərinin və ya marşrut sistemlərinin qurulduğu əsas xətti infrastrukturu təşkil edir. NODES, ARCS-nin son nöqtələrini və kəsişmələrini göstərir. 'Düyündən' qövsün ilk təpəsidir, 'Düyünə' son təpədir. Birlikdə qövs istiqamətini təyin edirlər. Arc-node topologiyası Dinamik Seqmentasiya modellərinin və ya marşrut sistemlərinin əlaqəsini müəyyənləşdirir. Marşrut sistemləri əsas qövs nodu topologiyasını dəyişdirmədən qurulur. Bir marşrut sisteminin marşrutları və bölmələri iki məlumat sənədində saxlanılır. Bu cədvəllər marşrut xüsusiyyət sinifini təyin edən marşrut atribut cədvəli (RAT) və bölmə xüsusiyyət sinifini təyin edən bölmə cədvəlidir (SEC). Bu xüsusiyyət sinifləri birlikdə bir marşrut sistemi təyin edir.

'.Aat' (Arc Atribut Cədvəli) ARCS haqqında təsviri məlumatları saxlayır. Əhatə dairəsində hər bir ARC üçün '.aat' -da bir qeyd var. Qeyd hər bir ARC üçün saxlanılan daxili sıra nömrəsi ilə xüsusiyyətlə əlaqələndirilir.

'.Nat' (Düyün Atribut Cədvəli) NODES haqqında təsviri məlumatları saxlayır. Əhatə dairəsində hər NODE üçün '.nat' -da bir qeyd var. Qeyd, düyünün daxili ardıcıllığı ilə NODE ilə əlaqələndirilir.


Həndəsə dəyişəndə ​​atribut cədvəlindəki dəyərlər avtomatik təzələnir? - Coğrafi İnformasiya Sistemləri

Tam məlumat növləri üçün, M maksimum ekran genişliyini göstərir. Maksimum ekran genişliyi 255-dir. Ekran genişliyi, Bölmə 11.1.6, "Sayısal Tip Atributları" nda təsvir edildiyi kimi bir növün saxlaya biləcəyi dəyərlər aralığına aid deyil.

Üzən və sabit nöqtəli məlumat növləri üçün, M saxlanıla bilən rəqəmlərin ümumi sayıdır.

MySQL 8.0.17-dən etibarən, ekran genişliyi atributu tam məlumat tipləri üçün köhnəlmişdir, bunun üçün MySQL-in gələcək versiyasında dəstəyin qaldırılmasını gözləməlisiniz.

Rəqəmsal bir sütun üçün ZEROFILL təyin etsəniz, MySQL avtomatik olaraq sütuna UNSIGNED atributunu əlavə edir.

MySQL 8.0.17 tarixindən etibarən ZEROFILL atributu ədədi məlumat növləri üçün köhnəlmişdir, bunun üçün MySQL-in gələcək versiyasında dəstəyin silinəcəyini gözləməlisiniz. Bu atributun təsirini istehsal etmək üçün alternativ bir vasitə istifadə etməyi düşünün. Məsələn, tətbiqlər LPAD () funksiyasından istədiyiniz genişliyə qədər nömrələri sıfırlamaq üçün istifadə edə bilər və ya formatlanmış nömrələri CHAR sütunlarında saxlaya bilər.

UNSIGNED atributuna icazə verən ədədi məlumat növləri də SIGNED-ə icazə verir. Lakin, bu məlumat növləri varsayılan olaraq imzalanır, buna görə SIGNED atributunun heç bir təsiri yoxdur.

MySQL 8.0.17-dən etibarən, UNSIGNED atributu FLOAT, DOUBLE və DECIMAL tip sütunlar üçün qüvvədən düşmüşdür (və hər hansı bir sinonim), dəstək üçün MySQL-in gələcək versiyasında silinəcəyini gözləməlisiniz. Bu cür sütunlar üçün sadə bir Yoxlama məhdudiyyəti istifadə etməyi düşünün.

SERIAL, BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE üçün təxəllüsdür.

Bir tam sütunun tərifindəki SERİSİ DEFAULT DƏYƏRİ NULL AUTO_INCREMENT UNİKAL DEYİL bir ləqəbdir.

Birinin UNSIGNED tipində olduğu tam ədədlər arasında çıxarma istifadə etdikdə, NO_UNSIGNED_SUBTRACTION SQL rejimi aktiv olmadıqca nəticə imzasızdır. Bölmə 12.11-ə baxın “Yayım funksiyaları və operatorlar”.

Bit-dəyər növü. M 1-dən 64-dək bir qiymət başına bit sayını göstərir. Varsayılan 1 olduqda M buraxılmışdır.

Çox kiçik bir ədədi. İmzalanan aralıq -128 ilə 127 arasındadır. İmzasız aralıq 0 ilə 255 arasındadır.

Bu tiplər TINYINT (1) üçün sinonimlərdir. Sıfırın dəyəri yalan sayılır. Sıfırdan aşağı dəyərlər doğru sayılır:

Bununla birlikdə, TRUE və FALSE dəyərləri burada göstərildiyi kimi sırasıyla 1 və 0 üçün takma adlardır:

Son iki açıqlamada göstərilən nəticələr göstərilir, çünki 2 nə 1-ə, nə də 0-a bərabərdir.

Kiçik bir tam ədədi. İmzalanan aralıq -32768 ilə 32767 arasındadır. İmzasız aralıq 0 ilə 65535 arasındadır.

Orta ölçülü tam ədəd. İmzalanan aralıq -8388608 ilə 8388607 arasındadır. İmzasız aralıq 0 ilə 16777215 arasındadır.

Normal ölçülü tam ədəd. İmzalanan aralıq -2147483648 ilə 2147483647 arasındadır. İmzasız aralıq 0 ilə 4294967295 arasındadır.

Bu tip INT-nin sinonimidir.

Böyük bir tam ədəd. İmzalanan aralıq -9223372036854775808 ilə 9223372036854775807 arasındadır. İmzasız aralıq 0-dan 18446744073709551615-ə qədərdir.

SERIAL, BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE üçün təxəllüsdür.

BIGINT sütunları ilə əlaqəli bəzi şeyləri bilməlisiniz:

Bütün hesablar imzalı BIGINT və ya CİBLE dəyərlərdən istifadə etməklə aparılır, buna görə bit funksiyaları xaricində 9223372036854775807 (63 bit) -dən böyük imzasız böyük ədədlər istifadə etməməlisiniz! Bunu etsəniz, BIGINT dəyərini DUBLE-yə çevirərkən yuvarlaqlaşdırma səhvlərinə görə nəticədəki son rəqəmlərdən bəziləri səhv ola bilər.

MySQL aşağıdakı hallarda BIGINT işləyə bilər:

BIGINT sütununda böyük imzasız dəyərləri saxlamaq üçün tam ədədlərdən istifadə edildikdə.

Hər iki operanın tam ədədi olduğu operatorlardan (+, -, * və s.) İstifadə edərkən.

Bir simli istifadə edərək saxlayaraq BIGINT sütununda hər zaman tam bir tam dəyər saxlaya bilərsiniz. Bu vəziyyətdə, MySQL aralıq ikiqat dəqiq təqdimat tələb etməyən sətirdən nömrəyə dönüşüm həyata keçirir.

-, + və * operatorları hər iki operand tam dəyər olduqda BIGINT hesabını istifadə edirlər. Bu o deməkdir ki, iki böyük tam ədədi (və ya tam ədədi qaytaran funksiyalardan) çoxaltsanız, nəticə 9223372036854775807-dən böyük olduqda gözlənilməz nəticələr əldə edə bilərsiniz.

Dolu “dəqiq” sabit nöqtə nömrəsi. M rəqəmlərin ümumi sayıdır (dəqiqlik) və D. ondalık nöqtəsindən (miqyasdan) sonrakı rəqəmlərin sayıdır. Onluq nöqtə və (mənfi rəqəmlər üçün) - işarəsi sayılmır M . Əgər D. 0, dəyərlərin ondalık nöqtəsi və ya kəsr hissəsi yoxdur. Maksimum rəqəm sayı ( M DECIMAL üçün 65-dir. Dəstəklənən ondalık sayının maksimumu ( D. ) 30-dur D. buraxılmışdır, default 0-dır M buraxılmışdır, default 10-dadır. (DECIMAL ədədi mətninin mətninin nə qədər müddətdə olmasına dair bir məhdudiyyət var. Bölmə 12.25.3, "İfadə ilə İşləmə".)

İMZALANMADI, göstərildiyi təqdirdə mənfi dəyərlərə icazə verilmir. MySQL 8.0.17 tarixindən etibarən UNSIGNED atributu DECIMAL tipli sütunlar üçün (və hər hansı bir sinonimi) köhnəlmişdir, bunun üçün MySQL-in gələcək versiyasında dəstəyin silinəcəyini gözləməlisiniz. Bu cür sütunlar üçün sadə bir Yoxlama məhdudiyyəti istifadə etməyi düşünün.

DECIMAL sütunları ilə bütün əsas hesablamalar (+, -, *, /) 65 rəqəmli dəqiqliklə aparılır.

Bu növlər DECIMAL üçün sinonimlərdir. SABİT sinonim digər verilənlər bazası sistemləri ilə uyğunluq üçün mövcuddur.

Kiçik (tək dəqiqliklə) üzən nöqtə sayı. İcazəli dəyərlər -3.402823466E + 38 - -1.175494351E-38, 0 və 1.175494351E-38 - 3.402823466E + 38 arasındadır. Bunlar IEEE standartına əsaslanan nəzəri hədlərdir. Həqiqi aralıq, hardware və ya əməliyyat sisteminizə görə bir az kiçik ola bilər.

M rəqəmlərin ümumi sayı və D. ondalık nöqtədən sonrakı rəqəmlərin sayıdır. Əgər MD. buraxılır, dəyərlər hardware tərəfindən icazə verilən həddə saxlanılır. Tək dəqiqliklə üzən nöqtə sayı təxminən 7 ondalık nöqtəyə qədər dəqiqdir.

SAL( M , D. ) standart olmayan bir MySQL uzantısıdır. MySQL 8.0.17 tarixindən etibarən bu sintaksis ləğv edilmişdir və gələcəkdə MySQL-in bir versiyasında dəstəyin silinəcəyini gözləməlisiniz.

İMZALANMADI, göstərildiyi təqdirdə mənfi dəyərlərə icazə verilmir. MySQL 8.0.17 tarixindən etibarən, UNSIGNED atributu FLOAT tipli sütunlar üçün (və hər cür sinonimlər) köhnəlmişdir və MySQL-in gələcək versiyasında dəstəyin silinəcəyini gözləməlisiniz. Bu cür sütunlar üçün sadə bir Yoxlama məhdudiyyəti istifadə etməyi düşünün.

FLOAT istifadə etmək sizə gözlənilməz problemlər verə bilər, çünki MySQL-dəki bütün hesablamalar ikiqat dəqiqliklə aparılır. Baxın Bölmə B.3.4.7, “Uyğun Sıralar Olmayan Problemlərin Çözülməsi”.

Üzən nöqtə nömrəsi. səh dəqiqliyi bitlərlə ifadə edir, lakin MySQL bu dəyərdən yalnız nəticədə alınan məlumat növü üçün FLOAT və ya DOUBLE istifadə edib-etməyəcəyini təyin etmək üçün istifadə edir. Əgər səh 0 ilə 24 arasındadır, məlumat növü no ilə FLOAT olur M və ya D. dəyərlər. Əgər səh 25-dən 53-ə qədərdirsə, məlumat növü Xeyr ilə ÇİFT olur M və ya D. dəyərlər. Nəticədə sütunun aralığı, bu hissədə əvvəllər təsvir edilən tək dəqiqlikli FLOAT və ya ikiqat dəqiqlikdə ÇİFT məlumat tipləri ilə eynidır.

İMZALANMADI, göstərildiyi təqdirdə mənfi dəyərlərə icazə verilmir. MySQL 8.0.17 tarixindən etibarən UNSIGNED atributu FLOAT tipli sütunlar üçün (və hər cür sinonimlər) köhnəlmişdir və gələcək MySQL versiyasında dəstəyin silinəcəyini gözləməlisiniz. Bu cür sütunlar üçün sadə bir Yoxlama məhdudiyyəti istifadə etməyi düşünün.

SAL( səh ) ODBC uyğunluğu üçün sintaksis təmin edilir.

Normal ölçülü (cüt dəqiqlikli) üzən nöqtə sayı. İcazəli dəyərlər -1.7976931348623157E + 308 - -2.2250738585072014E-308, 0 ve 2.2250738585072014E-308 - 1.7976931348623157E + 308. Bunlar IEEE standartına əsaslanan nəzəri hədlərdir. Həqiqi aralıq, hardware və ya əməliyyat sisteminizə görə bir az kiçik ola bilər.

M rəqəmlərin ümumi sayı və D. ondalık nöqtədən sonrakı rəqəmlərin sayıdır. Əgər MD. buraxılır, dəyərlər hardware tərəfindən icazə verilən həddə saxlanılır. İkiqat dəqiqlikdə üzən nöqtə sayı təxminən 15 ondalık nöqtəyə qədər dəqiqdir.

İKİ ( M , D. ) standart olmayan bir MySQL uzantısıdır. MySQL 8.0.17 tarixindən etibarən bu sintaksis ləğv edilmişdir və gələcəkdə MySQL-in bir versiyasında dəstəyin silinəcəyini gözləməlisiniz.

İMZALANMADI, göstərildiyi təqdirdə mənfi dəyərlərə icazə verilmir. MySQL 8.0.17 tarixindən etibarən, İMZALANmamış atribut DOUBLE (və hər cür sinonim) tipli sütunlar üçün ləğv edilmişdir və MySQL-in gələcək versiyasında dəstəyin silinəcəyini gözləməlisiniz. Bu cür sütunlar üçün sadə bir Yoxlama məhdudiyyəti istifadə etməyi düşünün.

Bu növlər DOUBLE üçün sinonimlərdir. İstisna: REAL_AS_FLOAT SQL rejimi aktivdirsə, REAL DOUBLE əvəzinə FLOAT üçün sinonimdir.


Açıq GL-də ibtidai işləmə

Həndəsə gölgeleyicisi, digər gölgelendirici tiplərindən fərqli olaraq bənzərsizdir ki, bir anda bütün primitivi (üçbucaq, xətt və ya nöqtə) işləyir və OpenGL boru kəmərindəki məlumatların miqdarını proqramlı olaraq dəyişdirə bilər. Bir təpə gölgelendiricisi, hər bir digər vertex & # 8217s məlumatlarına çata bilmədiyi və birdən-birə çıxan bir dəfəni bir dəfəyə işləyir. Yəni yeni zirvələr yarada bilməz və vertexin OpenGL tərəfindən daha da işlənməsinə mane ola bilməz. Tessellation gölgeleyicileri yamalar üzərində işləyir və tessellation amillərini təyin edə bilər, lakin yamaqların tessellated edilməsinə bir az daha çox nəzarət edə bilməzlər və ayrılmış primitivlər yarada bilməzlər. Eynilə, fraqment kölgələşdiricisi bir anda tək bir fraqmenti işləyir, başqa bir fraqmentə məxsus hər hansı bir məlumata daxil ola bilmir, yeni fraqmentlər yarada bilməz və fraqmentləri yalnız onları ataraq məhv edə bilər. Digər tərəfdən, bir həndəsə kölgələdicisi ibtidai bir şəkildə bütün zirvələrə çıxa bilər (ibtidai rejimlərlə altıya qədər) GL_TRIANGLES_ADJACENCYGL_TRIANGLE_STRIP_ADJACENCY), bir ibtidai növünü dəyişdirə bilər və hətta ibtidailər yarada və məhv edə bilər.

Həndəsə şaderləri OpenGL boru kəmərinin isteğe bağlı hissəsidir. Heç bir həndəsə kölgələdicisi olmadıqda, təpədən və ya tessellation qiymətləndirmə kölgəsindən gələn çıxışlar göstərilən ibtidai ərazidə interpolasiya olunur və birbaşa fraqment kölgələyicisinə verilir. Həndəsə kölgələdici olduqda, təpə və ya tessellation qiymətləndirmə kölgəsinin çıxışları həndəsə kölgələyicinin girişinə çevrilir və həndəsə kölgələdicinin çıxışları interpolyasiya olunur və fraqment kölgələyiciyə verilir. Həndəsə gölgeleyicisi, vertex və ya tessellation qiymətləndirmə kölgəsinin çıxışını daha da işləyə bilər və yeni primitivlər yaradırsa (buna amplifikasiya deyilir), hər primitivdə onları yaratdıqca fərqli transformasiyalar tətbiq edə bilər.

Keçən Həndəsə Shader

Fəsil 3-də izah edildiyi kimi, & # 8220 Boru Kəmərinin Ardınca & # 8221, hər şeyi göstərməyə imkan verən ən sadə həndəsə kölgələdici keçmək List 8.16-da göstərilən shader.

Siyahı 8.16. Sadə bir həndəsə kölgə salan üçün mənbə kodu

Bu, girişini dəyişdirmədən çıxışına göndərən çox sadə bir keçid həndəsi kölgələyicidir. Bir təpə kölgələyiciyə bənzəyir, ancaq əhatə etmək üçün bir neçə əlavə fərq var. Bir dəfəyə bir neçə sətirdən keçərək hər şeyi aydınlaşdırır. İlk bir neçə sətir, sadəcə başqa hər hansı bir gölgələdəki kimi, gölgelendiricinin versiya nömrəsini (430) qurdu. Növbəti cüt sətir ilk həndəsə kölgə səciyyəvi hissələridir. Siyahı 8.17-də yenidən göstərilir.

Siyahı 8.17. Həndəsə shader düzeni seçmələri

Bunlar bir düzən seçicisindən istifadə edərək giriş və çıxış ibtidai rejimlərini təyin edir. Bu konkret kölgələyicidə istifadə edirik üçbucaqlar giriş üçün və üçbucaq_ zolağı çıxış üçün. Layihə seçicisi ilə birlikdə digər ibtidai növlər daha sonra əhatə olunur. Həndəsə gölgeleyicinin çıxışı üçün yalnız ibtidai növü müəyyənləşdirmirik, həm də kölgələdici tərəfindən istehsal edilməsi gözlənilən maksimum zirvələrin sayı max_vertices seçici). Bu shader fərdi üçbucaqlar istehsal edir (çox qısa üçbucaq zolaqları kimi yaradılıb), buna görə burada 3-ü göstərdik.

Sonrakı bizimdir əsas () yenə də vertex və ya fragment shader-də görünə bilənlərə bənzəyən funksiya. Shader bir loop ehtiva edir və loop quraşdırılmış massivin uzunluğu ilə müəyyən edilmiş bir neçə dəfə işləyir, gl_in. Bu, başqa bir həndəsə kölgələyiciyə məxsus dəyişəndir. Həndəsə gölgeleyicinin giriş ibtidasının bütün zirvələrinə çıxışı olduğundan giriş bir sıra olaraq elan edilməlidir. Vertex shader tərəfindən yazılmış bütün quraşdırılmış dəyişənlər (məsələn gl_Pozisiya) bir quruluşa yerləşdirilir və bu strukturların bir sıra adlı bir dəyişən şəklində həndəsə kölgələdicisinə təqdim olunur gl_in.

Uzunluğu gl_in [] array giriş ibtidai rejimi ilə müəyyən edilir və bu kölgələdicidə üçbucaqlar giriş ibtidai modudur, ölçüsü gl_in [] üçdür. Daxili döngə yenidən List 8.18-də verilmişdir.

Siyahı 8.18. Elementləri üzərində təkrarlama gl_in []

Döngümüzün içərisində sadəcə elementlərini kopyalayaraq zirvələr yaradırıq gl_in [] həndəsə gölgeleyicisine & # 8217s output. Həndəsə kölgə salanın çıxışları, təpə kölgə salanın çıxışlarına bənzəyir. Budur, yazırıq & # 8217 gl_Pozisiya, bir vertex kölgələdiyimiz kimi. Yeni vertex & # 8217s xüsusiyyətlərinin hamısını qurduqdan sonra EmitVertex () çağırırıq. Bu, bu köşə üçün işimizi gördüyümüzü və bütün məlumatları kənarda saxlamağımızı və növbəti zirvəni qurmağa başlamağımızı söyləyən həndəsə kölgələdicilərinə xas olan daxili bir funksiyadır.

Nəhayət, döngünün icrası başa çatdıqdan sonra, başqa bir xüsusi, həndəsə kölgələyici funksiyasına bir çağırış var, EndPrimitive (). EndPrimitive () cari ibtidai üçün zirvələr istehsal etdiyimizi və birincisinə keçməyimizi kölgələyənə deyir. Dəqiqləşdirdik üçbucaq_ zolağı bizim gölgelendiricimiz üçün çıxış olaraq və buna görə də zəng etməyə davam etsək EmitVertex () üç dəfədən çox OpenGL üçbucaq zolağına üçbucaqlar əlavə etməyə davam edir. Ayrı, fərdi üçbucaqlar və ya çoxsaylı, əlaqəsiz üçbucaq zolaqları yaratmaq üçün həndəsə kölgələyicimizə ehtiyacımız varsa (unutmayın, həndəsə kölgələndiciləri yeni həndəsə yarada və ya gücləndirə bilər), zəng edə bilərik EndPrimitive () sərhədlərini qeyd etmək üçün hər biri arasında. Zəng etmirsinizsə EndPrimitive () kölgələyicinizin bir yerində, kölgələndici bitəndə ibtidai avtomatik olaraq başa çatır.

Tətbiqdə Həndəsə Shaders istifadə

Həndəsə kölgələdiciləri, digər gölgelendirici növləri kimi, çağıraraq yaradılır glCreateShader () funksiyası və istifadəsi GL_GEOMETRY_SHADER shader növü olaraq, aşağıdakı kimi:

Shader yaradıldıqdan sonra, digər gölgelendirici obyektlər kimi istifadə olunur. OpenGL-ə zəng edərək kölgə mənbəyi kodunuzu verirsiniz glShaderSource (), istifadə edərək gölgelendiriciyi tərtib edin glCompileShader () funksiyasını işə salın və bir çağıraraq bir proqram obyektinə əlavə edin glAttachShader () funksiya. Daha sonra proqram normal olaraq istifadə olunur glLinkProgram () funksiya. İndi bir funksiyanı istifadə edərək həndəsi çəkdiyiniz zaman bir həndəsə kölgələdicisi olan bir proqram obyektiniz var glDrawArrays (), vertex kölgə sətri başına bir dəfə, həndəsə kölgələdicisi ibtidai (nöqtə, xətt və ya üçbucaq) başına bir dəfə, fraqment isə fraqment başına bir dəfə işləyəcəkdir. Bir həndəsə kölgələyicisinin aldığı primitivlər öz giriş ibtidai rejimində gözlədikləri ilə uyğun olmalıdır. Tessellation aktiv olmadıqda, rəsm əmrlərinizdə istifadə etdiyiniz ibtidai rejim həndəsə gölgeleyicinin giriş ibtidai rejiminə uyğun olmalıdır. Məsələn, həndəsə gölgeleyicisinin ibtidai modu nöqtələrdirsə, yalnız istifadə edə bilərsiniz GL_POINTS zəng etdikdə glDrawArrays (). Həndəsə gölgeleyicinin giriş ibtidai rejimi üçbucaqdırsa, istifadə edə bilərsiniz GL_TRIANGLES, GL_TRIANGLE_STRIP, və ya GL_TRIANGLE_FAN sizin glDrawArrays () zəng edin. Həndəsə kölgə salan giriş ibtidai rejimlərinin və icazə verilən həndəsə növlərinin tam siyahısı Cədvəl 8.1-də verilmişdir.

Cədvəl 8.1. Həndəsə Shader Giriş rejimləri üçün icazə verilən çəkmə rejimləri

Həndəsə Shader Giriş Modu

GL_LINES, GL_LINE_LOOP, GL_LINE_STRIP

GL_TRIANGLES, GL_TRIANGLE_FAN, GL_TRIANGLE_STRIP

xətlər_yaxınlıq

üçbucaqlar

Tessellation aktiv olduqda, rəsm əmrlərinizdə istifadə etdiyiniz rejim həmişə olmalıdır GL_PATCHESvə OpenGL, tessellation prosesi zamanı yamaları nöqtələrə, xətlərə və ya üçbucaqlara çevirəcəkdir. Bu vəziyyətdə, həndəsə kölgələdicinin giriş ibtidai rejimi tessellation ibtidai rejiminə uyğun olmalıdır. Giriş ibtidai növü, bir düzəliş seçicisindən istifadə edərək həndəsə kölgələdicisinin gövdəsində göstərilir. Giriş düzeni seçicisinin ümumi formasıdır

Bu onu göstərir ibtidai_tip həndəsə gölgeleyicinin idarə etməsi gözlənilən giriş ibtidai növüdür və ibtidai_tip dəstəklənən ibtidai rejimlərdən biri olmalıdır: xal, xətlər, üçbucaqlar, xətlər_yaxınlıq, və ya üçbucaqlar. Həndəsə gölgeleyicisi hər ibtidai üçün bir dəfə işləyir. Bu o deməkdir ki, hər nöqtə üçün bir dəfə işləyir GL_POINTS hər sətirdə bir dəfə GL_LINES, GL_LINE_STRIPGL_LINE_LOOP və üçün üçbucaqda bir dəfə GL_TRIANGLES, GL_TRIANGLE_STRIPGL_TRIANGLE_FAN. Həndəsə kölgələyiciyə girişlər giriş ibtidasını təşkil edən bütün zirvələri ehtiva edən massivlərdə təqdim olunur. Əvvəlcədən təyin edilmiş girişlər yerləşmiş bir massivdə saxlanılır gl_in [], Listing 8.19-da müəyyən edilmiş bir sıra quruluşdur.

Siyahı 8.19. Tərifi gl_in []

Bu strukturun üzvləri, vertex shader-də yazılmış daxili dəyişənlərdir: gl_Pozisiya, gl_PointSizegl_ClipDistance []. Bu quruluşu, bu fəsildə əvvəllər təsvir edilmiş vertex shader-də çıxış bloku kimi elan edilməsindən tanımalısınız. Bu dəyişənlər vertex shader-də qlobal dəyişənlər kimi görünür, çünki blokun orada bir nümunə adı yoxdur, lakin dəyərləri sona çatır gl_in [] həndəsə kölgələyicisində göründükdə blok hallarının bir sıra. Vertex shader tərəfindən yazılmış digər dəyişənlər də həndəsə kölgələyicisində massivlərə çevrilir. Fərdi dəyişikliklər halında, vertex shader-dəki çıxışlar normal olaraq elan edilir və həndəsə shader-in girişləri massiv olması istisna olmaqla oxşar bir bildirişə malikdir. Çıxışları təyin edən bir vertex shader düşünün

Həndəsə gölgeleyicisinə müvafiq giriş olacaqdır

Hər ikisinə də diqqət yetirin rəngnormal dəyişikliklər həndəsə kölgələyicisindəki massivlərə çevrilmişdir. Təpədən həndəsə kölgələyicisinə keçmək üçün çox miqdarda məlumatınız varsa, şaquli kölgələdicidən həndəsə kölgələdiciyə ötürülən hər şaquli məlumatı bir interfeys blokuna bağlamaq rahat ola bilər. Bu vəziyyətdə, vertex shaderiniz belə bir tərifə sahib olacaq:

Və həndəsə kölgələyicisinə müvafiq giriş belə görünür:

Bu bəyannamə ilə həndəsə kölgələyicidəki vertex verilərinə daxil ola biləcəksiniz. vertex [n] .color və sair. Həndəsə kölgələyicidəki giriş massivlərinin uzunluğu işləyəcəyi primitivlərin növündən asılıdır. Məsələn, nöqtələr tək bir təpədən əmələ gəlir və buna görə də massivlər yalnız bir elementə, üçbucaqlar isə üç təpədən əmələ gəlir və beləliklə massivlər üç element uzunluğunda olacaqdır. Xüsusi olaraq müəyyən bir ibtidai növü işləmək üçün dizayn edilmiş bir həndəsə kölgələyicisini yazırsınızsa, az miqdarda əlavə kompilyasiya vaxtı səhv yoxlanmasını təmin edən giriş massivlərinizi açıq şəkildə ölçə bilərsiniz. Əks təqdirdə, sıralarınızın giriş ibtidai tip layout seçicisi tərəfindən avtomatik olaraq ölçülməsinə icazə verə bilərsiniz. Giriş ibtidai rejimlərinin və nəticədə giriş massivlərinin ölçüsünün tam bir xəritəsi Cədvəl 8.2-də göstərilmişdir.

Cədvəl 8.2. Həndəsə Shaders-ə giriş massivlərinin ölçüləri

xətlər_yaxınlıq

üçbucaqlar

Həndəsə gölgeleyicisi tərəfindən yaradılacaq ibtidai növü də göstərməlisiniz. Yenə də, bu, bir layout seçicisindən istifadə edərək müəyyən edilir, belədir:

Bu giriş ibtidai tip layout seçicisinə bənzəyir, yeganə fərq, out sözünü istifadə edərək gölgelendiricinin nəticəsini elan etdiyinizdir. Həndəsə gölgeleyicidən icazə verilən çıxış ibtidai növləri xal, xətt zolağı üçbucaq_ zolağı. Diqqət yetirin ki, həndəsə kölgələdiciləri yalnız zolaqdan ibtidai tipləri çıxarmağı dəstəkləyir (nöqtələri saymırıq və təbii ki, nöqtə zolağı kimi bir şey yoxdur).

Həndəsə gölgeleyicisini konfiqurasiya etmək üçün istifadə edilməli olan bir son düzən seçicisi var. Bir həndəsə kölgə sətri başına dəyişən miqdarda məlumat istehsal edə bildiyindən, OpenGL-ə həndəsə kölgələyicinin istehsal etməsi gözlənilən maksimum zirvələrin sayını göstərərək bütün bu məlumatlar üçün nə qədər yer ayırmaq lazım olduğunu izah etmək lazımdır. Bunu etmək üçün aşağıdakı düzən seçicisini istifadə edin:

Bu, həndəsə kölgələyicinin çıxara biləcəyi maksimum zirvələrin sayını n-ə təyin edir. OpenGL, hər bir təpə üçün aralıq nəticələrin saxlanılması üçün bufer sahəsi ayıra bildiyindən, bu, tətbiqinizin düzgün işləməsinə imkan verən ən kiçik say olmalıdır. Məsələn, bal toplamağı və bir dəfəyə bir sətir hazırlamağı planlaşdırırsınızsa, bunu təhlükəsiz şəkildə ikiyə təyin edə bilərsiniz. Bu, gölgelendirici cihazına sürətli işləmək üçün ən yaxşı fürsəti verir. Gələn həndəsəni ağır bir şəkildə tessellate etməyə hazırlaşırsınızsa, bunu daha yüksək bir rəqəmlə təyin etmək istəyə bilərsiniz, baxmayaraq ki, bu sizə biraz performans göstərə bilər. Həndəsə kölgələyicinin istehsal edə biləcəyi təpələr sayının yuxarı həddi OpenGL tətbiqetməyinizə bağlıdır. Ən azı 256 olacağına zəmanət verilir, ancaq mütləq maksimumu axtararaq tapmaq olar glGetIntegerv () ilə GL_MAX_GEOMETRY_OUTPUT_VERTICES parametr.

Ayrıca, onları bir vergüllə ayıraraq tək bir bəyanatla birdən çox layout seçicisini elan edə bilərsiniz:

Bu layout seçmələri ilə qazan #versiya bəyannamə və boş əsas () funksiyanı tərtib edən və əlaqələndirən, ancaq heç bir şey etməyən bir həndəsə kölgələdicisi istehsal etməlisiniz. Əslində göndərdiyiniz hər hansı bir həndəsəni atacaq və tətbiqinizlə heç bir şey çəkilməyəcəkdir. İki vacib funksiyanı təqdim etməliyik: EmitVertex ()EndPrimitive (). Bunlara zəng etməsəniz, heç bir şey çəkilməyəcək.

EmitVertex () bu təpə üçün bütün məlumatları doldurduğunuzu həndəsə kölgələyicisinə deyir. Zirvənin qurulması, vertex shader kimi çox işləyir. Daxili dəyişənə yazmalısınız gl_Pozisiya. Bu, hündürlüyü kölgələyəndə olduğu kimi həndəsə kölgələdicisi tərəfindən istehsal olunan təpənin klip-boşluq koordinatlarını təyin edir. Həndəsə kölgələyicidən fraqment kölgələyiciyə keçirtmək istədiyiniz digər atributlar interfeys blokunda və ya həndəsə kölgələyicidəki qlobal dəyişənlər kimi elan edilə bilər. EmitVertex-ə nə vaxt zəng etsəniz, həndəsə gölgeleyicisi hazırda bütün çıxış dəyişənlərində dəyərləri saxlayır və yeni bir zirvə yaratmaq üçün istifadə edir. Zəng edə bilərsiniz EmitVertex () həndəsə kölgəsində istədiyiniz qədər, özünüzdə göstərdiyiniz həddə çatana qədər max_vertices layout seçmə. Hər dəfə yeni bir zirvə yaratmaq üçün çıxış dəyişənlərinizə yeni dəyərlər qoyursunuz.

Qeyd etməyiniz vacib bir şey EmitVertex () Çıxışınızdan hər hansı birinin dəyərlərini (məsələn gl_Pozisiya) təyin olunmamışdır. Beləliklə, məsələn, tək bir rəngli bir üçbucaq çıxarmaq istəyirsinizsə, əksinə bu rəngi hər bir zirvənizlə yazmalısınız, nəticədə təyin olunmamış nəticələrlə nəticələnəcəksiniz.

EmitPrimitive () ibtidadın sonuna yuxarı nöqtələr əlavə etməyi başa çatdırdığınızı göstərir. Unutmayın, həndəsə kölgələyənlər yalnız zolaqdakı ibtidai tipləri dəstəkləyir ( xətt zolağı üçbucaq_ zolağı). Çıxışınızın ibtidai növüdürsə üçbucaq_ zolağı və sən zəng edirsən EmitVertex () üç dəfədən çox, həndəsə kölgələyən bir zolaqda çoxsaylı üçbucaqlar istehsal edəcəkdir. Eynilə, əgər çıxışınız ibtidai növdürsə xətt zolağı və sən zəng edirsən EmitVertex () iki dəfədən çox, birdən çox sətir əldə edəcəksən. Həndəsə kölgəsində, EndPrimitive () zolağa aiddir. Bu o deməkdir ki, fərdi xətlər və ya üçbucaqlar çəkmək istəyirsinizsə, zəng etməlisiniz EndPrimitive () hər iki və ya üç zirvədən sonra. Zəng edərək birdən çox zolaq da çəkə bilərsiniz EmitVertex () birdən çox zəng arasında EndPrimitive ().

Zəng etməyinizə dair son bir şey EmitVertex ()EndPrimitive () həndəsə kölgələyicisində, tək bir ibtidai istehsal etmək üçün kifayət qədər zirvələr istehsal etməmisinizsə (məsələn, siz istehsal edirsiniz & # 8217; üçbucaq_ zolağı çıxışlar və siz zəng edin EndPrimitive () iki zirvədən sonra), bu ibtidai üçün heç bir şey istehsal olunmur və onsuz da istehsal etdiyiniz zirvələr sadəcə atılır.

Həndəsə Shader-də Həndəsənin atılması

Proqramınızdakı həndəsə gölgeleyicisi hər ibtidai üçün bir dəfə işləyir. Bu ibtidai ilə nə etmək tamamilə sizə aiddir. İki funksiya EmitVertex ()EndPrimitive () proqramlı olaraq üçbucağınıza və ya xətt zolağınıza yeni zirvələr əlavə etməyə və yeni zolaqlara başlamağa icazə verin. Onlara istədiyiniz qədər zəng edə bilərsiniz (tətbiqetmə ilə müəyyənləşdirilən maksimuma çatana qədər). Onlara ümumiyyətlə zəng etməməyinizə icazə verdiniz. Bu, həndəsəni uzaqlaşdırmağa və primitivləri atmağa imkan verir. Həndəsə gölgeleyiciniz işləyirsə və heç vaxt zəng etmirsinizsə EmitVertex () o primitiv üçün heç bir şey çəkilməyəcək. Bunu göstərmək üçün həndəsəni kosmosda ixtiyari bir nöqtədən göründüyü kimi sıradan çıxaran xüsusi bir arxa silmə qaydasını tətbiq edə bilərik. Bu tətbiq olunur qaşqabaq misal.

Əvvəlcə kölgələyici versiyamızı qurduq və həndəsə gölgeleyicimizi üçbucaqları qəbul etmək və üçbucaq zolaqları istehsal etmək üçün elan etdik. Arxa üstü kəsmə, həqiqətən, xətlər və ya nöqtələr üçün çox məna vermir. Dünya məkanında xüsusi baxış bucağımızı tutacaq bir forma da təyin edirik. Bu 8.20 Listinqində göstərilir.

Siyahı 8.20. Xüsusi kəsmə həndəsi kölgəçəkəninin konfiqurasiyası

İndi içimizdə əsas () funksiyası, üçbucaq üçün normal üz tapmalıyıq. Bu sadəcə üçbucaq müstəvisindəki hər hansı iki vektorun çarpaz məhsuludur və bunun üçün üçbucağın kənarlarını istifadə edə bilərik. Siyahı 8.21 bunun necə edildiyini göstərir.

Siyahı 8.21. Həndəsə bir kölgədə normal bir üz tapmaq

Artıq normal vəziyyətə gəldikdə, istifadəçinin müəyyənləşdirdiyi baxış bucağına doğru və ya uzaqlaşdığını müəyyən edə bilərik. Bunu etmək üçün normalı dünya məkanı olan baxış nöqtəsi ilə eyni koordinat məkanına çevirməliyik. Model görünüşü matrisini vahid bir formada olduğumuzu düşünsək, normal olaraq bu matrisə vurun. Daha doğrusu, vektoru sol üst 3-ün transpozisiyasına tərs vurmalıyıq × Model baxış matrisinin 3 submatriksi. Bu normal matris olaraq bilinir və bunu tətbiq etmək və istəsəniz öz formasına salmaq üçün azadsınız. Lakin, model görünüşü matrisiniz yalnız tərcümə, vahid miqyaslı (kəsilmədən) və fırlanma ehtiva edirsə, birbaşa istifadə edə bilərsiniz. Unutmayın, normal üç elementli bir vektordur və model görünüşü matrisi 4-dür × 4 matris. İkisini çoxaltmadan əvvəl normalı dörd elementli bir vektora uzatmalıyıq. Bundan sonra vektorun nöqtə məhsulunu vektorla nöqteyi-nəzərdən üçbucağın istənilən nöqtəsinə apara bilərik.

Nöqtəli məhsulun işarəsi mənfi olarsa, normalın izləyicidən üzü üzə çıxması və üçbucağın kəsilməsi deməkdir. Müsbətdirsə, normal üçbucaq izləyiciyə tərəf işarə edir və biz üçbucağı ötürməliyik. Üzü normal vəziyyətə gətirmək, nöqtə məhsulunu yerinə yetirmək və nəticənin işarəsini yoxlamaq üçün kod 8.22 Listinqində göstərilir.

Siyahı 8.22. Bir həndəsə kölgələyəndə şərti olaraq həndəsə yayan

Siyahı 8.22-də nöqtə məhsulu müsbətdirsə, giriş zirvələrini həndəsə kölgələdicisinin çıxışına kopyalayırıq və çağırırıq EmitVertex () hər biri üçün. Nöqtəli məhsul mənfi olarsa, ümumiyyətlə heç bir şey etmərik. Bu, gələn üçbucağın tamamilə atılması və heç bir şeyin çəkilməməsi ilə nəticələnir.

Bu xüsusi nümunədə, həndəsə kölgələyicisinə daxil olan hər üçbucaq üçün ən çox bir üçbucaq çıxışı meydana gətiririk. Həndəsə gölgeleyicisinin çıxışı bir üçbucaq zolağı olsa da, zolaqlarımız yalnız bir üçbucağı ehtiva edir. Bu səbəbdən bir zəng edilməsinə qətiliklə ehtiyac yoxdur EndPrimitive (). Tamlığı üçün sadəcə orada buraxırıq.

Şəkil 8.16 bu kölgənin nəticəsini göstərir.

Şəkil 8.16. Həndəsə fərqli nöqtələrdən götürülür

Şəkil 8.16-da, virtual görüntüləyici fərqli mövqelərə köçürülmüşdür. Gördüyünüz kimi, modelin müxtəlif hissələri həndəsə kölgələdicisi tərəfindən məhv edildi. Bu nümunənin xüsusilə faydalı olacağını gözləmirdilər, ancaq bir həndəsə kölgələyicinin tətbiqetmə ilə müəyyən edilmiş meyarlara əsaslanaraq həndəsə kəsimini həyata keçirmə qabiliyyətini nümayiş etdirir.

Həndəsə Shader-də Həndəsənin dəyişdirilməsi

Əvvəlki nümunə ya həndəsəni atdı, ya da dəyişdirilmədən keçdi. Yeni, çıxarılan şəkillər yaratmaq üçün həndəsə kölgələyicisindən keçdikləri zaman, zirvələri dəyişdirmək də mümkündür. Həndəsə kölgələyiciniz bir-birinə (yəni gücləndirmə və ya kəsilmə baş vermir) üst nöqtələri keçməsinə baxmayaraq, bu, yalnız başqa bir kölgə kölgələyicisi ilə mümkün olmayan işləri etməyə imkan verir. Məsələn, giriş həndəsəsi üçbucaq zolaqları və ya pərəstişkarlar şəklindədirsə, nəticədə əldə olunan həndəsə ortaq nöqtələrə və ortaq kənarlara sahib olacaqdır. Paylaşılan təpələri hərəkət etdirmək üçün vertex kölgələyicisindən istifadə etmək, bu təpəni paylaşan bütün üçbucaqları hərəkət etdirəcəkdir. Beləliklə, yalnız hündürlüyü kölgələyən kölgə köməyi ilə orijinal həndəsədə bir kənar bölüşən iki üçbucağı ayırmaq mümkün deyil. Lakin, bu həndəsə kölgələyicisini istifadə edərək əhəmiyyətsizdir.

Üçbucaqları qəbul edən və istehsal edən bir həndəsə kölgəsini nəzərdən keçirin üçbucaq_ zolağı çıxış olaraq. Üçbucaqları qəbul edən həndəsə kölgələyicisinə giriş, mənşəli olub-olmamasından asılı olmayaraq fərdi üçbucaqlardır. glDrawArrays () və ya a glDrawElements () funksiya çağırışı və ya ibtidai tipin olub olmadığı GL_TRIANGLES, GL_TRIANGLE_STRIP, və ya GL_TRIANGLE_FAN. Həndəsə kölgələdicisi üçdən çox uc çıxarmadığı təqdirdə nəticə müstəqil, əlaqəsiz üçbucaqlardır.

Bu növbəti nümunədə, bütün üçbucaqları üz normalları boyunca itələyərək bir model partladırıq və # 8221. Orijinal modelin fərdi üçbucaqlarla və ya üçbucaq zolaqları və ya pərəstişkarları ilə çəkilməsinin fərqi yoxdur. Əvvəlki nümunədə olduğu kimi, giriş üçbucaqlardır, nəticədir üçbucaq_ zolağı, və həndəsə kölgələdicisi tərəfindən çıxarılan maksimum zirvələrin sayı üçdür, çünki həndəsəni gücləndirmirik və azaltmırıq. Bunun üçün quraşdırma kodu List 8.23-də göstərilir.

Siyahı 8.23. & # 8220 Explode & # 8221 həndəsə kölgələyicisinin quraşdırılması

Üçbucağı xaricə proyeksiya etmək üçün hər üçbucağın normal üzünü hesablamalıyıq. Yenə də bunu etmək üçün üçbucağın müstəvisindəki iki vektorun çarpaz məhsulunu və üçbucağın iki kənarını götürə bilərik. Bunun üçün List 8.21-dən kodu yenidən istifadə edə bilərik. Artıq üçbucağımızın normal qarşı-qarşıya qaldığına görə tətbiqetmə nəzarəti altında olan köşələri o normal boyunca proyeksiya edə bilərik. Bu məbləğ forma ilə saxlanıla bilər (buna deyirik) partlayış_faktoru) və tətbiq tərəfindən yeniləndi. Bu sadə kod 8.24 Listinqində göstərilir.

Siyahı 8.24. Normal bir üzü itələmək

Bu həndəsə gölgeleyicinin bir model üzərində işləməsinin nəticəsi Şəkil 8.17-də göstərilmişdir. Model düzəldilib və fərdi üçbucaqlar görünməyə başladı.

Şəkil 8.17. Həndəsə gölgeleyicisini istifadə edərək bir modelin partladılması

Həndəsə Shader-də Həndəsə Yaradır

Necə ki, sizə zəng etmək tələb olunmur EmitVertex () və ya EndPrimitive () ümumiyyətlə həndəsə kölgələyicisindən hər hansı bir məhsul istehsal etmək istəmirsinizsə, zəng etmək də mümkündür. EmitVertex ()EndPrimitive () yeni həndəsə istehsal etməyiniz lazım olduğu qədər. Yəni həndəsə gölgeleyicinizin başlanğıcında elan etdiyiniz maksimum çıxış zirvələrinə çatana qədər. Bu funksionallıq girişin birdən çox nüsxəsini çıxarmaq və ya girişi kiçik parçalara ayırmaq kimi şeylər üçün istifadə edilə bilər. Bu növbəti nümunənin mövzusudur, olan gstessellate kitabdakı nümunə və mənbə kodunu müşayiət edənlər. Gölgəçimizə giriş mənşə ətrafında mərkəzləşmiş bir tetraedrdir. Tetraedrin hər üzü tək bir üçbucaqdan düzəldilmişdir. Gələn üçbucaqları hər kənar boyunca yarı hissədə yeni zirvələr istehsal edərək, sonra ortaya çıxan bütün zirvələri mənşəyindən dəyişən məsafələrdə olmaları üçün hərəkət etdiririk. Bu, tetraedrimizi tırmanışlı bir forma çevirir.

Həndəsə gölgeleyicisi cisim məkanında işlədiyinə görə (unutmayın, tetraedrın zirvələri mənşə ətrafında mərkəzləşmişdir), kölgə gölgələyicisində heç bir koordinat transformasiyası etməməli və bunun əvəzinə, yaradıldıqdan sonra həndəsə kölgələyicidəki çevrilmələri etməliyik. yeni zirvələr. Bunu etmək üçün sadə, keçidli bir təpə kölgələyicisinə ehtiyacımız var. Siyahı 8.25, sadə bir keçid kölgə gölgeleyicisini göstərir.

Siyahı 8.25. Vertex kölgələyicidən keçir

Bu shader yalnız vertex mövqeyini həndəsə kölgələyicisinə keçir. Toxunma koordinatları və ya normallar kimi zirvələrlə əlaqəli digər xüsusiyyətləriniz varsa, onları hündürlüyü kölgələyəndən həndəsə şaderinə də keçirməlisiniz.

Əvvəlki nümunədə olduğu kimi, üçbucaqları həndəsə gölgeleyicisinə giriş olaraq qəbul edirik və üçbucaq zolağı istehsal edirik. Hər üçbucaqdan sonra zolağı qırırıq ki, ayrı, müstəqil üçbucaqlar yarada bilək. Bu nümunədə hər giriş üçbucağı üçün dörd çıxış üçbucağı istehsal edirik. Maksimum çıxış vertex sayımızı üç təpədən 12 & # 8212dörd üçbucaq olaraq elan etməliyik. Model görünüşlü çevrilmə matrisini həndəsə kölgələyicisində saxlamaq üçün vahid bir matris elan etməyimiz lazımdır, çünki biz bu nöqtələri yaratdıqdan sonra çeviririk. Siyahı 8.26 bu kodu göstərir.

Siyahı 8.26. & # 8220tessellator & # 8221 həndəsə gölgeleyicisinin quraşdırılması

Əvvəlcə gələn vertex koordinatlarını yerli dəyişənə kopyalayaq. Sonra, orijinal, gələn zirvələri nəzərə alaraq, hər bir kənarın orta nöqtəsini ortalamasını alaraq tapırıq. Ancaq bu vəziyyətdə, sadəcə ikiyə bölmək əvəzinə, bir miqyas faktoru ilə çoxalırıq ki, bu da dəyişməyə imkan verəcəkdir. dikilik nəticələnən obyektin. Bunu etmək üçün kod 8.27 Siyahısında göstərilir.

Siyahı 8.27. Bir həndəsə kölgəsində yeni zirvələr yaratmaq

Demək olar ki, eyni koddan istifadə edərək bir neçə üçbucaq yaratacağımız üçün bu kodu bir funksiyaya yerləşdirə bilərik (List 8.28-də göstərilmişdir) və əsas tessellation funksiyamızdan çağırırıq.

Siyahı 8.28. Həndəsə kölgələyicidən tək bir üçbucağın yayılması

Diqqət yetirin make_face funksiyası, yuxarı hissələrin mövqelərini yaymağına əlavə olaraq normal bir üz rəngini hesablayır. İndi sadəcə zəng edirik make_face List 8.29-da göstərilən əsas funksiyamızdan dörd dəfə.

Siyahı 8.29. Bir həndəsə kölgə səthində üzlər istehsal etmək üçün bir funksiyadan istifadə

Şəkil 8.18, sadə həndəsə shader əsaslı tessellation proqramımızın nəticəsini göstərir.

Şəkil 8.18. Həndəsə gölgeleyicisini istifadə edərək əsas tessellation

Ağır tessellation üçün həndəsə kölgələyicisinin istifadə edilməsinin ən optimal performansı göstərə bilməyəcəyini unutmayın. Bu nümunədə göstəriləndən daha mürəkkəb bir şey istənirsə, OpenGL-in hardware tessellation funksiyalarından istifadə etmək ən yaxşısıdır. Bununla birlikdə, hər bir giriş ibtidası üçün iki ilə dörd arasında çıxış primitivinin sadə bir şəkildə gücləndirilməsi istənilirsə, həndəsə kölgələdicisi bəlkə də yoldur.

Həndəsə Shader-də ibtidai tipin dəyişdirilməsi

İndiyə qədər keçdiyimiz bütün həndəsə kölgələyici nümunələri giriş kimi üçbucaqları götürdü və çıxış şəklində üçbucaq zolaqları istehsal etdi. Bu həndəsə növünü dəyişdirmir & # 8217; Bununla birlikdə, həndəsə kölgələndicilər fərqli həndəsə növlərini daxil edib çıxara bilərlər. Məsələn, nöqtələri üçbucağa və ya üçbucaqları nöqtələrə çevirə bilərsiniz. İçində normal baxan Bir sonrakı təsvir edəcəyimiz nümunə, həndəsə tipini üçbucaqlardan xəttlərə dəyişdirəcəyik. Gölgəçiyə hər bir təpə girişi üçün, təpəni normal qəbul edirik və onu bir xətt kimi təmsil edirik. Üzü də normal qəbul edirik və bunu başqa bir xətt kimi təmsil edirik. Bu, hər vertexdə və hər üz üçün hər iki modeli & # 8217s normals & # 8212bunu görselleştirmemize imkan verir. Buna baxmayaraq, orijinal modelin üstünə normal çəkmək istəyirsinizsə, normalları görselləşdirmək üçün həndəsə kölgələdici ilə hər şeyi iki dəfə çəkməlisiniz və modeli göstərmək üçün bir dəfə həndəsə kölgələdici olmadan istifadə etməlisiniz. Tək bir həndəsə kölgələyicidən iki fərqli primitivin qarışığını çıxara bilməzsiniz.

Üzvlərinə əlavə olaraq həndəsə gölgeleyicimiz üçün gl_in struktur, hər bir vertex normalına ehtiyacımız var və bu, vertex shader-dən keçməlidir. Listing 8.25-dən keçən vertex shader-in yenilənmiş versiyası Listing 8.30-da verilmişdir.

Siyahı 8.30. Normalları ehtiva edən bir keçid köşəyi gölgelendiricisi

Bu mövqe atributunu birbaşa gl_Pozisiya daxili dəyişən və normalı bir çıxış blokuna yerləşdirir.

Həndəsə kölgələyən üçün quraşdırma kodu List 8.31-də göstərilir. Bu nümunədə üçbucaqları qəbul edirik və hər bir xəttdən bir xətt zolağı istehsal edirik. Vizuallaşdırdığımız hər normal üçün ayrı bir sətir çıxardığımız üçün, istehlak edilən hər təpə üçün iki təpə, üstəlik normal üz üçün iki sətir istehsal edirik. Buna görə, giriş üçbucağına çıxardığımız maksimum zirvələrin sayı səkkizdir. Vertex shader-də elan etdiyimiz Vertex çıxış blokunu uyğunlaşdırmaq üçün həndəsə gölgələyicisində müvafiq giriş interfeys blokunu da elan etməliyik. Həndəsə kölgələyicisindəki obyekt-məkan-dünya-məkan çevrilməsini edəcəyik, model görünüşü-proyeksiya matrisini təmsil etmək üçün mvp adlı bir mat4 formasını elan edirik. Bu, xətti təmsil edən yeni təpələr istehsal edənə qədər vertex & # 8217s mövqeyini normal olaraq eyni koordinat sistemində saxlaya bilmək üçün lazımdır.

Siyahı 8.31. & # 8220normal visualizer & # 8221 həndəsə kölgələyicisinin quraşdırılması

Hər bir giriş zirvəsi son vəziyyətinə çevrilir və həndəsə kölgələyicisindən yayılır və sonra giriş zirvəsini normal vəziyyətinə keçirərək onu son vəziyyətinə çevirərək ikinci bir zirvə yaranır. Bu, bütün normallarımızın uzunluğunu birləşdirir, lakin model-görünüş-proyeksiya matrisimizdə kodlanmış hər hansı bir miqyasın model ilə birlikdə onlara tətbiq edilməsinə imkan verir. Normalları tətbiqetmə ilə təmin olunan forma ilə artırırıq normal_ uzunluq, modelə uyğun olaraq miqyaslanmağa imkan verir. Daxili döngəmiz 8.32 siyahısında göstərilir.

Siyahı 8.32. Həndəsə şaderində normallardan xətlər istehsal olunur

Bu, hər bir təpədə normal istiqamətə yönələn qısa bir xətt seqmenti yaradır. İndi üzü normal istehsal etməliyik. Bunu etmək üçün normal çəkəcəyimiz uyğun bir yer seçməliyik və xəttin çəkiləcəyi həndəsə kölgələdicisində üzün normal özünü hesablamalıyıq.

List 8.33-də verilmiş əvvəlki nümunədə olduğu kimi, üzü normal tapmaq üçün üçbucağın ikisindən çarpaz məhsul istifadə edirik. Xətt üçün başlanğıc nöqtəsini seçmək üçün üçbucağın mərkəz hissəsini seçirik ki, bu da sadəcə giriş təpələrinin koordinatlarının ortalamasıdır. Siyahı 8.33 kölgə kodunu göstərir.

Siyahı 8.33. Həndəsə şaderində normal bir üz çəkmək

İndi bir model göstərdiyimiz zaman Şəkil 8.19-da göstərilən şəkli alırıq.

Şəkil 8.19. Bir həndəsə kölgə köməyi ilə bir modelin normalarının göstərilməsi

Birdən çox saxlama axını

Yalnız bir təpə kölgələdicisi olduqda, kölgələyənə daxil olan təpələr və çevrilmə geribildirim tamponunda saxlanılan təpələr arasında sadə bir, tək bir əlaqə mövcuddur. Bir həndəsə kölgələdici olduqda, hər bir gölgəçi çağırışı əlaqəli çevrilmə geribildirim tamponlarına sıfır, bir və ya daha çox təpəni yığa bilər. Yalnız bu deyil, dörd çıxışı konfiqurasiya etmək həqiqətən mümkündür axınlar və nəticəsini seçdiyi birinə göndərmək üçün həndəsə gölgeleyicisini istifadə edin. Bu, məsələn, həndəsəni sıralamaq və ya digər həndəsəni transformasiya geribildirim tamponlarında saxlayarkən bəzi primitivlər göstərmək üçün istifadə edilə bilər. Əvvəlcə bir həndəsə kölgələyicisində birdən çox çıxış axını istifadə edildikdə olduqca böyük məhdudiyyətlər var, bütün axınlar üçün həndəsə kölgələyicidən çıxış ibtidai rejimi xal. İkincisi, eyni zamanda həndəsə göstərmək və məlumatları çevrilmiş geribildirim tamponlarına daxil etmək mümkün olsa da, yalnız ilk axın göstərilə bilər və digərləri yalnız yaddaş üçündür. Tətbiqiniz bu məhdudiyyətlərə uyğundursa, bu çox güclü bir xüsusiyyət ola bilər.

Həndəsə kölgələyicinizdən birdən çox çıxış axını qurmaq üçün istifadə edin axın dörd axından birini seçmək üçün layout seçmə. Ən çox digər çıxış layout seçicilərində olduğu kimi axın seçici birbaşa tək bir çıxışa və ya bir çıxış blokuna tətbiq oluna bilər. Ayrıca birbaşa tətbiq edilə bilər çıxdı bir çıxış dəyişənini elan etmədən açar söz, bu halda digər çıxış bəyannamələrini bir başqasına qədər təsir edəcəkdir axın layout seçicisinə rast gəlindi. Məsələn, bir həndəsə kölgələdicisində aşağıdakı çıxış bəyannamələrini nəzərdən keçirin:

Həndəsə gölgeleyicisinde, zəng etdiyiniz zaman EmitVertex (), vertex ilk çıxış axınına yazılacaq (axın 0). Eynilə, zəng edərkən EndPrimitive (), 0 yayımlamaq üçün yazılan ibtidai sona çatacaq. Bununla birlikdə zəng edə bilərsiniz EmitStreamVertex ()EndStreamPrimitive (), hər ikisi də nəticəni göndərmək üçün axını ifadə edən tam bir arqument götürür:

The axın arqument bir kompilyasiya vaxtı sabit olmalıdır. Rasterizasiya aktivdirsə, 0 axınına göndərilən hər hansı bir primitiv rasterləşdiriləcəkdir.

Həndəsə Shader tərəfindən təqdim olunan yeni ibtidai növlər

Dörd yeni ibtidai növ həndəsə kölgələdiciləri ilə təqdim edildi: GL_LINES_ADJACENCY, GL_LINE_STRIP_ADJACENCY, GL_TRIANGLES_ADJACENCYGL_TRIANGLE_STRIP_ADJACENCY. Bu ibtidai növlər, həqiqətən, yalnız bir həndəsə kölgələyici ilə işləyərkən faydalıdır. Yeni bitişik primitiv növlərdən istifadə edildikdə, həndəsə kölgələdicisinə keçən hər bir xətt və ya üçbucaq üçün yalnız bu ibtidaini təyin edən təpələrə çıxışı deyil, eyni zamanda birincisinin yanında olan ibtidai nöqtənin də təpələrinə çıxışı var. # 8217s işlənir.

İstifadə edərək göstərdiyiniz zaman GL_LINES_ADJACENCY, hər sətir seqmenti effektiv atribut massivlərindən dörd zirvəni istehlak edir. İki orta təpə xətti təşkil edir, birinci və son təpələr bitişik təpələr hesab olunur. Həndəsə kölgələyicisinə girişlər bu səbəbdən dörd elementli massivdir. Əslində həndəsə kölgələdicinin giriş və çıxış növlərinin bir-biri ilə əlaqəli olmasına ehtiyac olmadığı üçün, GL_LINES_ADJACENCY həndəsə kölgələyicisinə ümumiləşdirilmiş dördbucaqlı primitivlər göndərmə yolu kimi baxıla bilər. Həndəsə gölgeleyicisi onları istədiyi şeyə çevirməkdə sərbəstdir. Məsələn, həndəsə gölgeleyiciniz hər dörd zirvənin hər dəstini iki üçbucaqdan ibarət bir üçbucaq zolağına çevirə bilər. Bu, istifadə edərək quadları göstərməyə imkan verir GL_LINES_ADJACENCY ibtidai. Bununla birlikdə qeyd etmək lazımdır ki, istifadə edərək çəkirsinizsə GL_LINES_ADJACENCY heç bir həndəsə kölgələdicisi aktiv olmadıqda, hər dörd zirvədən ibarət olan hər iki daxili təpədən istifadə edilərək nizamlı xətlər çəkiləcəkdir. Ən kənardakı iki təpə atılacaq və təpə kölgələdicisi ümumiyyətlə üzərində işləməyəcəkdir.

Istifadə olunur GL_LINE_STRIP_ADJACENCY oxşar effekt yaradır. Fərq budur ki, bütün zolaq ibtidaidir, hər ucunda bir əlavə vertex var. Səkkiz zirvədən istifadə edərək OpenGL-ə göndərirsinizsə GL_LINES_ADJACENCY, həndəsə gölgeleyicisi iki dəfə işləyəcək, eyni zirvələri istifadə edərək göndərsəniz GL_LINE_STRIP_ADJACENCY, həndəsə gölgeleyicisi beş dəfə işləyəcək. Şəkil 8.20 hər şeyi aydınlaşdırmalıdır. Üst sıradakı səkkiz təpə ilə OpenGL-ə göndərilir GL_LINES_ADJACENCY ibtidai rejim. Həndəsə gölgeleyicisi hər dəfə dörd zirvədə iki dəfə işləyir & # 8212ABCD və EFGH. İkinci sətirdə eyni səkkiz təpə istifadə edərək OpenGL-ə göndərilir GL_LINE_STRIP_ADJACENCY ibtidai rejim. Bu dəfə, həndəsə gölgelendiricisi beş dəfə & # 8212ABCD, BCDE və s. EFGH qədər işləyir. Hər iki vəziyyətdə də, möhkəm oxlar, heç bir həndəsi kölgəçi olmasa göstəriləcək sətirlərdir.

Şəkil 8.20. Bitişik primitivləri olan xətlərdən istifadə edərək istehsal olunan xətlər

The GL_TRIANGLES_ADJACENCY ibtidai rejimi GL_LINES_ADJACENCY rejimi. Təsdiqlənmiş atribut massivlərindəki hər altı təpədən ibarət dəst üçün həndəsə kölgələyicisinə üçbucaq göndərilir. Birinci, üçüncü və beşinci təpələr həqiqi üçbucağı, ikinci, dördüncü və altıncı təpələr isə üçbucağın təpələri arasında olduğu düşünülür. Bu o deməkdir ki, həndəsə kölgələyicisinə giriş altı elementli massivdir. Əvvəlki kimi, həndəsə kölgələyicisini istifadə edərək köşələrə istədiyiniz hər şeyi edə bilərsiniz GL_TRIANGLES_ADJACENCY həndəsə kölgələyicisinə özbaşına altı vertex primitivlər əldə etmək üçün yaxşı bir yoldur. Şəkil 8.21 bunu göstərir.

Şəkil 8.21. Üçbucaqlar istifadə edərək istehsal olunur GL_TRIANGLES_ADJACENCY

Bu ibtidai növlərin sonuncusu və bəlkə də ən mürəkkəbi (və ya alternativ olaraq başa düşülməsi ən çətindir) GL_TRIANGLE_STRIP_ADJACENCY. Bu ibtidai, şeridi meydana gətirən digər hər bir təpə ilə (birinci, üçüncü, beşinci, yeddinci, doqquzuncu və s.) Bir üçbucaq zolağını təmsil edir. Aradakı təpələr bitişik təpələrdir. Şəkil 8.22 prinsipi göstərir. Şəkildə A ilə P arasındakı təpələr OpenGL-ə göndərilən 16 təpəni təmsil edir. Hər üçbucaqdan (A, C, E, G, I və s.) Üçbucaq zolağı yaranır və aralarındakı zirvələr (B, D, F, H, J və s.) Bitişikdir. zirvələr.

Şəkil 8.22. Üçbucaqlar istifadə edərək istehsal olunur GL_TRIANGLE_STRIP_ADJACENCY

Şeridin başlanğıcında və sonunda gələn üçbucaqlar üçün xüsusi hallar var, lakin zolaq başladıqdan sonra, təpələr Şəkil 8.23-də daha aydın görünən nizamlı bir naxışa düşür.

Şəkil 8.23. Üçün zirvələrin sifarişi GL_TRIANGLE_STRIP_ADJACENCY

Sifariş qaydaları GL_TRIANGLE_STRIP_ADJACENCY OpenGL Spesifikasiyasında aydın şəkildə yazılıb və xüsusi olaraq burada xüsusi hallar qeyd olunur. Bu ibtidai tiplə işləmək istəyirsinizsə spesifikasiyanın həmin hissəsini oxumağınız tövsiyə olunur.

Bir Həndəsə Shader istifadə Quads göstərilməsi

Kompüter qrafikasında söz dörd dörd tərəfi təsvir etmək üçün istifadə olunur & dörd tərəfi olan bir forma. Müasir qrafik API-ləri, ilk növbədə müasir qrafika dəstəyi dördlüyü dəstəkləmədiyi üçün birbaşa rüblərin göstərilməsini dəstəkləmir. Bir modelləşdirmə proqramı dördlərdən hazırlanan bir obyekt istehsal etdikdə, hər dördlüyü bir cüt üçbucağa çevirərək həndəsə məlumatlarını ixrac etmək seçimini tez-tez ehtiva edir. Bunlar daha sonra birbaşa qrafik aparatı tərəfindən göstərilir. Bəzi qrafika aparatlarında dördlər dəstəklənir, ancaq daxili olaraq aparatlar bu dönüşümü dördlərdən cüt üçbucaqlara çevirəcəkdir.

Bir çox halda, dördlüyü bir üçbucağa qırmaq çox yaxşı nəticə verir və vizual görüntü dördlər üçün yerli dəstək mövcud olsaydı göstəriləndən çox fərqli deyil. Bununla birlikdə, dördlüyü bir üçbucağa qırmaq üçün böyük bir sinif var deyil & # 8217t düzgün nəticə verin. Şəkil 8.24-ə nəzər yetirin.

Şəkil 8.24. Bir cüt üçbucaqdan istifadə edərək dördlüyü göstərmək

Şəkil 8.24-də dördbucağı üçbucaq cütü şəklində göstərdik. Hər iki şəkildə də təpələr eyni qaydada sarılır. Üç qara təpə və bir ağ təpə var. Sol şəkildəki üçbucaqlar arasındakı bölmə dörddən şaquli uzanır. Ən üst və iki yan təpə qara, ən alt təpə ağ rəngdədir. İki üçbucaq arasındakı tikiş parlaq bir xətt kimi aydın görünür. Sağ görüntüdə dördlük üfüqi olaraq bölünmüşdür. Bu, yalnız qara zirvələri ehtiva edən və buna görə tamamilə qara olan ən üst üçbucağı və bir ağ təpə və iki qara olan ən alt üçbucağı meydana gətirdi, buna görə bir qara ilə ağ gradyan göstərildi.

Bunun səbəbi, fraqment kölgələyiciyə təqdim olunan hər təpəlik rənglərin rasterləşdirilməsi və interpolasiyası zamanı yalnız üçbucaq göstərməyimizdir. Müəyyən vaxtda yalnız üç köşe & # 8217 dəyərində məlumat mövcuddur və bu səbəbdən, dörddə digər & # 8221 təpəni nəzərə ala bilmərik.

Aydındır ki, görüntülərin heç biri düzgün deyil, amma ikisi də digərindən yaxşı deyil. Həm də, iki şəkil kökündən fərqlidir. Dördlüyü bizim üçün bölmək üçün ixrac alətlərimizə və ya daha pis bir işləmə kitabxanasına güvəniriksə, bu iki şəkildən hansını əldə edəcəyimizə dair heç bir nəzarətimiz yoxdur. Bununla əlaqədar nə edə bilərik? Yaxşı, həndəsə kölgələşdiricisi, ilə primitivləri qəbul edə bilir GL_LINES_ADJACENCY yazın və bunların hər birinin dördlüyə sahib olması üçün kifayət qədər dörd zirvəsi var. Bu o deməkdir ki, bitişik sətirlərdən istifadə edərək, ən azı həndəsə kölgələdiyinə qədər dörd zirvə & # 8217 dəyərində məlumat əldə edə bilərik.

Sonra, rasterizer ilə məşğul olmalıyıq. Xatırladaq ki, həndəsə gölgeleyicinin çıxışı yalnız nöqtələr, xətlər və ya üçbucaqlar ola bilər və buna görə edə biləcəyimiz ən yaxşısı hər dördlüyü qırmaqdır ( xətlər_yaxınlıq ibtidai) bir cüt üçbucağa. Bunun bizi əvvəlki yerimizdə buraxdığını düşünə bilərsiniz. Ancaq indi üstünlüyümüz var ki, istədiyimiz hər hansı bir məlumatı fraqment kölgələyiciyə ötürə bilərik.

Dördlüyü düzgün bir şəkildə göstərmək üçün rənglərimizi (və ya başqa bir atributu) interpolasiya etmək istədiyimiz domenin parametrləşdirilməsini nəzərdən keçirməliyik. Üçbucaqlar üçün üçbucağın üç köşesini ağırlaşdırmaq üçün istifadə olunan üç ölçülü koordinatlar olan baryentrik koordinatlardan istifadə edirik. Bununla birlikdə, dördlü üçün iki ölçülü bir parametrləşdirmə istifadə edə bilərik. Şəkil 8.25-də göstərilən dördlüyü nəzərdən keçirin.

Şəkil 8.25. Dördlüyün parametrləşdirilməsi

Dördlüyün domen parametrləşdirməsi iki ölçülüdür və iki ölçülü bir vektor kimi təqdim edilə bilər. Bu vektorun içindəki hər hansı bir nöqtədə dəyərini tapmaq üçün dördün üstündə hamar bir şəkildə interpolasiya edilə bilər. Dördüncü dördüncünün hər biri üçün A, B, CD., vektorun dəyərləri müvafiq olaraq (0, 0), (0, 1), (1, 0) və (1, 1) olacaqdır. Bu dəyərləri hər hündürlüyə həndəsə gölgələyicimizdə yarada və parçalayıcıya ötürə bilərik.

Bu vektordan parçalanma digər xüsusiyyətlərimizin interpolyasiya edilmiş dəyərlərini əldə etmək üçün istifadə etmək üçün aşağıdakı müşahidəni aparırıq: Hər hansı bir interpolantın dəyəri vertex arasında düzgün hərəkət edəcəkdir AB və arasında CD. ilə x vektorun komponenti. Eynilə, kənar boyunca bir dəyər AB kənarındakı müvafiq dəyərə doğru hamarca hərəkət edəcəkdir CD. Beləliklə, atributların zirvələrindəki dəyərləri nəzərə alınmaqla A vasitəsilə D., dördün içindəki hər hansı bir nöqtədə hər bir atributun dəyərini interpol etmək üçün domen parametrindən istifadə edə bilərik.

Beləliklə, həndəsə gölgeleyicimiz, düzəldilməmiş, hər bir vertex atributunun dördünü də sadəcə keçir düz hər bir təpə başına hamarca dəyişən bir domen parametri ilə birlikdə fragment shader-ə çıxışlar. Fragment shader daha sonra etki parametrindən və istifadə edir dördü də birbaşa interpolasiyanı yerinə yetirmək üçün hər başına vertex atributları.

Həndəsə kölgə salan List 8.34-də, fraqment kölgələyənlər Liste 8.35-də göstərilir və hər ikisi də gsquads misal. Nəhayət, Şəkil 8.24-də göstərilənlə eyni həndəsi göstərilməsinin nəticəsi Şəkil 8.26-da göstərilmişdir.

Siyahı 8.34. Dördlərin göstərilməsi üçün həndəsə gölgeleyicisi

Siyahı 8.35. Dördlərin göstərilməsi üçün fraqment kölgələşdiricisi

Şəkil 8.26. Dördlü bir həndəsə kölgələyici istifadə edərək göstərilmişdir

Birdən çox Viewport Transformasiyaları

& # 8220Viewport Transformation & # 8221-də yenidən baxış dəyişdirilməsi və göründüyünüz pəncərənin düzbucağını zəng edərək necə göstərə biləcəyinizi 3-cü Fəsildə öyrəndiniz. glViewport ()glDepthRange (). Normalda, tətbiqinizin bir masaüstündə işlədiyinə və ya bütün ekranı ələ keçirdiyinə görə görünüş pəncərəsinin ölçülərini bütün pəncərəni və ya ekranı əhatə edəcək şəkildə təyin edərdiniz. Bununla birlikdə, görünüş pəncərəsini gəzdirmək və daha böyük bir çərçivə tamponu içərisində birdən çox virtual pəncərəyə çəkmək mümkündür. Bundan əlavə, OpenGL ayrıca birdən çox görünüşdən istifadə etməyə imkan verir eyni vaxtda. Bu xüsusiyyət görüntüləmə massivləri kimi tanınır.

Bir baxış massivindən istifadə etmək üçün əvvəlcə OpenGL-ə istifadə etmək istədiyimiz mənzərələrin hüdudlarının nə olduğunu izah etməliyik. Bunu etmək üçün zəng edin glViewportIndexedf () və ya glViewportIndexedfv ()prototipləri

Hər ikisi üçün glViewportIndexedf ()glViewportIndexedfv (), indeks dəyişdirmək istədiyiniz görünüşün indeksidir. İndeksləşdirilmiş görüntü portu əmrlərinə baxış nöqtəsi parametrlərinin istifadə olunan tam rəqəmlərdən çox üzən nöqtə dəyərləri olduğuna da diqqət yetirin glViewport (). OpenGL, minimum 16 görünüşdən 6-nı dəstəkləyir və s indeks 0 ilə 15 arasında dəyişə bilər.

Eynilə, hər bir baxış yerinin də zəng edərək təyin oluna bilən öz dərinlik diapazonu var glDepthRangeIndexed ()prototipi

Yenidən, indeks 0 ilə 15 arasında ola bilər. Əslində glViewport () həqiqətən mənzərələrin hamısını eyni aralığa gətirir və glDepthRange () bütün mənzərələrin dərinlik aralığını eyni aralığa təyin edir. Bir dəfəyə bir və ya ikidən çoxunu təyin etmək istəyirsinizsə, istifadə etməyi düşünə bilərsiniz glViewportArrayv ()glDepthRangeArrayv ()prototipləri

Bu funksiyalar ya baxış genişliyini, ya da dərinlik aralığını təyin edir saymaq tərəfindən göstərilən görünüş ilə başlayan görünüşlər əvvəlcə massivdə göstərilən parametrlərə v. Üçün glViewportArrayv (), serialın ardıcıllığı var x, y, eni, hündürlük dəyərlər, bu sırada. Üçün glDepthRangeArrayv (), serialın ardıcıllığı var n, f cütlər, bu sırada.

Görünüş sahələrini təyin etdikdən sonra həndəsəni onlara yönəltməlisiniz. Bu bir həndəsə kölgələyici istifadə edərək edilir. Daxili dəyişənə yazı gl_ViewportIndex daxil edilmək üçün görünüş pəncərəsini seçir. Siyahı 8.36 belə bir həndəsə gölgelendiricinin necə görünə biləcəyini göstərir.

Siyahı 8.36. Həndəsə kölgələyicidəki çoxsaylı görünüşlərə baxış

Listing 8.36-nin gölgelendiricisi icra edildikdə, gölgelendiricinin dörd çağırışı hazırlanır. Hər çağırışda, dəyərini təyin edir gl_ViewportIndex dəyərinə gl_InvocationID, həndəsə kölgələyən nümunələrin hər birinin nəticəsini ayrı bir baxış yerinə yönəltmək. Ayrıca, hər çağırış üçün vahid blokdan götürdüyü ayrı bir model-görünüş-proyeksiya matrisindən istifadə edir, çevirmə_blok. Əlbəttə ki, daha mürəkkəb bir kölgə salmaq olar, lakin bu, çevrilmiş həndəsənin bir sıra fərqli mənzərələrə istiqamətini göstərmək üçün kifayətdir. Bu kodu biz multipleviewport nümunə və bu shaderin sadə iplik kubumuzda işləməsinin nəticəsi Şəkil 8.27-də göstərilmişdir.

Şəkil 8.27. Çoxsaylı görünüşlərə göstərmə nəticəsi

Şəkil 8.27-də Listinq 8.36 tərəfindən göstərilən küpün dörd nüsxəsini aydın şəkildə görə bilərsiniz. Hər biri öz baxış pəncərəsində göstərildiyi üçün ayrı-ayrılıqda kəsilir və buna görə də kublar müvafiq görünüşlərinin kənarlarından keçdikdə, OpenGL & # 8217s kəsmə mərhələsi ilə küncləri kəsilir.


Giriş / Çıxış nişanı

VOP'lar üçün bu nişan qovşaqda görünən giriş və çıxışları və onların növlərini qurmağa imkan verir.

Digər qovşaq növü kateqoriyası üçün bu nişandakı nəzarətlər varlığın giriş və çıxışlarına insan tərəfindən oxunaqlı etiketlər verməyə imkan verir. Bunlar şəbəkə redaktorunda istifadəçi konnektor üzərində hərəkət edərkən ipucu kimi görünür.

VOP aktivləri

Nişanın biri giriş, digəri çıxış üçün iki cədvəl redaktoru var.

Basın Parametrlərdən girişlər yaradın / yeniləyin avtomatik olaraq qovşaq parametrlərinə əsasən girişlər yaratmaq. Bu istifadəçiyə girişləri birləşdirərək parametr dəyərlərini ləğv etməyə imkan verir.

Düymə eyni ad və etiketli girişlər yaradır və parametr növündən giriş tipini təxmin edir. Parametrlə eyni adda bir giriş artıq mövcuddursa, düymə yalnız etiketi yeniləyir, belə ki giriş növündə dəyişikliklər yazılmır.

Parametrlərə əsaslanan girişlər cədvəldə düzəldilə bilməz. Onlar bir məlumat işarəsi ilə qeyd olunur.

Parametrlə eyni adda olan bir giriş əl ilə yaradarsanız, onlar avtomatik olaraq əlaqələndiriləcəkdir.

Giriş və ya çıxış əlavə etmək üçün Yeni giriş və ya Yeni çıxış masaların üstündəki menyular.

Redaktə etmək üçün cədvəldəki mövcud giriş / çıxışın adını və ya etiketini vurun.

Bir cərgədəki ilk hücrəni seçin və sonra cədvəldəki sətri yenidən düzəltmək üçün yuxarı və ya aşağı sürükləyin.

Hər sətrin ilk xanasını Shift düyməsinə basmaqla və ya Ctrl düyməsini basmaqla çoxsaylı sətirləri seçə və sonra birdən çox sətirləri eyni anda sürükləyə bilərsiniz.

İmza sifarişini yenidən təşkil etmək üçün sütun başlıqlarını sürükləyə bilərsiniz.

Bir giriş / çıxışı silmək üçün sıradakı Sil simgesini vurun.

Bəzi hüceyrələr düzəldilə və silinə bilməz.Məsələn, parametrlərə uyğun girişlər və ixrac edilmiş parametrlərə və ya VOP şəbəkə çıxışlarına uyğun çıxışlar.

Bir VOP operatoru bir VOP şəbəkəsində görünəndə, VEX Builder yalnız kodun tələb olunduğunu təyin etdikdə həmin operator tərəfindən yaradılan kodu daxil edəcəkdir. Ümumiyyətlə, bu alt şəbəkə növü VOP-lar, Çıxış VOP-u və birbaşa və ya dolayı yolla tələb olunan bir VOP-un girişinə bağlı olan hər hansı bir VOP üçün doğrudur. Bununla birlikdə, VEX Builder'ı açaraq VOP'unuz üçün kod yaratmağa məcbur edə bilərsiniz Məcburi Kod Nəsil.

Xarici və ya Prosedur Shader

Bu VOP yaradılan VEX kodu əvəzinə bir DSO və ya DLL faylı tərəfindən tətbiq edilirsə, bunu açın.

VOP imzaları

VOP birdən çox ola bilər imzalar: giriş növlərinin və çıxış növünün bir dəsti. Məsələn, Sine VOP, VEX sin funksiyasının fərqli istifadəsinə uyğun müxtəlif imza (float → float, vector → vector) var.

Hər bir imza giriş cədvəlindəki bir sütunla təmsil olunur və üç çıxış cədvəlindəki sütunlar. Onları uyğunlaşdırmaq olar İmza adı (imza sütununun ilk hücrəsi). Başlanğıcda, bir VOP qovşağında varsayılan adlı bir imza var.

İstifadə edə bilərsiniz Yeni imza yeni bir imza əlavə etmək üçün düyməni (yəni fərqli bir yazılmış arqument dəsti və fərqli bir çıxış ilə əsas VEX kodunu axtarmağın yeni bir yolu). Bu, üst giriş cədvəlinə bir yeni sütun əlavə edir və üç sütunları altdakı cədvələ.

İmza sütunundakı ilk xana imza adıdır. İkinci hücrə imza üçün insan tərəfindən oxunaqlı bir etiketdir. Bunlar həm giriş cədvəlindəki imza sütununda, həm də çıxış cədvəlindəki müvafiq imzanın birinci sütununda göstərilir. Bir cədvəldə adı və ya etiketi düzəltmək digərini avtomatik olaraq yeniləyir.

Girişlər cədvəlində bir imza sütununun sətirləri (ad və etiket sətirlərindən sonra) hər girişin növlərini ehtiva edir bu imza aktiv olduqda. (İstifadəçi node parametri interfeysinin yuxarı hissəsindəki açılan menyudan aktiv imzanı seçir.) Pop-up menyudan növü seçmək üçün bir hüceyrəni vurun.

Çıxışlar cədvəlində ilk imza sütununun sətirləri (ad və etiket sətirlərindən sonra) çıxış növünü ehtiva edir.

Müəyyən bir imza üçün istifadə ediləcək bir standart parametr təmin etmək üçün giriş ilə eyni adda bir parametr yaradın, sonra alt xətt, sonra imza adı.

Məsələn, vektor və float məlumat tiplərinə sahib olan rəng və çarpan iki girişiniz olduğunu düşünək. Rəng və çarpan adlanan iki parametr yaradacaqsınız. Birincisi bir rəng parametri, ikincisi tək bir float parametri olacaqdır. İndi çarpanın da vektor olmasına icazə vermək istəyirsiniz4. Yeni bir imza yaradın və v4 adlandırın. Bu imza üçün çarpan məlumat növünü vector4 olaraq dəyişdirin. 4 üzən olan multiplier_v4 adlı yeni bir parametr yaradın. İndi bu operatorlardan biri yaradıldıqda və imza v4 olaraq təyin olunduqda, VEX Builder standart dəyərləri təmin etmək üçün rəng və multiplier_v4 parametrlərindən istifadə edəcəkdir.


Parametrlər

Göstərildiyi təqdirdə cədvəl müvəqqəti cədvəl kimi yaradılır. Müvəqqəti cədvəllər sessiyanın sonunda və ya isteğe bağlı olaraq cari əməliyyatın sonunda avtomatik olaraq atılır (bax TƏHLÜKƏDƏ aşağıda). Eyni adla mövcud qalıcı cədvəllər cədvəl mövcud olduğu müddətdə cədvəldə görünmür, əgər onlar şemaya uyğun adlarla istinad edilmirsə. Müvəqqəti bir cədvəldə yaradılan hər hansı bir indeks avtomatik olaraq müvəqqətidir.

Avtomatik vakum daemonu əldə edə bilməz və bu səbəbdən müvəqqəti masaları vakuum edə və təhlil edə bilməz. Bu səbəbdən sessiya SQL əmrləri vasitəsi ilə müvafiq vakuum və analiz əməliyyatları aparılmalıdır. Məsələn, mürəkkəb sorğularda müvəqqəti bir cədvəldən istifadə ediləcəksə, çalıştırmak ağıllıdır TƏHLİL doldurulduqdan sonra müvəqqəti masada.

İstəyə görə, Qlobal və ya YERLİ əvvəl yazmaq olar Müvəqqəti və ya TEMP. Bu, PostgreSQL-də heç bir fərq yaratmır, ancaq Uyğunluğa baxın.

Göstərildiyi təqdirdə, cədvəl açılmamış cədvəl kimi yaradılır. Qeydə alınmamış cədvəllərə yazılmış məlumatlar əvvəlcədən yazma jurnalına yazılmır (Fəsil 29-a baxın), bu da onları adi cədvəllərdən xeyli sürətli edir. Bununla birlikdə, qəza təhlükəsiz deyil: bir qəza və ya təmizlənməmiş bir bağlanmadan sonra açılmamış bir masa avtomatik olaraq kəsilir. Qeyd edilməmiş bir cədvəlin məzmunu da gözləmə serverlərinə təkrarlanmır. Bağlanmamış bir cədvəldə yaradılan hər hansı bir indeks avtomatik olaraq da silinir, lakin qeyd edilməmiş GiST indeksləri hazırda dəstəklənmir və açılmamış bir cədvəldə yaradıla bilməz.

Eyni adla münasibət artıq mövcuddursa səhv atmayın. Bu vəziyyətdə bildiriş verilir. Mövcud əlaqənin yaradılmış münasibət kimi bir şey olduğuna heç bir zəmanət olmadığını unutmayın.

Yaranacaq cədvəlin adı (istəyə görə şemaya uyğun).

Yaradır a yığılmış masa, quruluşunu göstərilən kompozit növdən götürür (adı isteğe bağlı olaraq şemaya uyğun). Yazılan cədvəl öz növünə bağlanır, məsələn cədvəl düşərsə cədvəl atılır (ilə BÖLMƏNİN NÖVÜ CASCADE).

Yazılan bir cədvəl yaradıldıqda, sütunların məlumat növləri əsas kompozit növü ilə təyin olunur və CƏDVƏL YARADIN əmr. Lakin CƏDVƏL YARADIN əmr cədvələ standart və məhdudiyyətlər əlavə edə bilər və saxlama parametrlərini təyin edə bilər.

Yeni cədvəldə yaradılacaq bir sütunun adı.

Sütunun məlumat növü. Buraya sıra göstəriciləri daxil ola bilər. PostgreSQL tərəfindən dəstəklənən məlumat növləri haqqında daha çox məlumat üçün Fəsil 8-ə baxın.

The COLLATE bənd sütuna bir uyğunlaşma təyin edir (bu, uyğunlaşdırıla bilən bir məlumat növü olmalıdır). Göstərilmədiyi təqdirdə, sütun məlumat növünün standart qarışığı istifadə olunur.

İstəyə görə VƏRİSLƏR bənddə yeni cədvəlin bütün sütunları avtomatik olaraq miras aldığı cədvəllərin siyahısı göstərilir.

İstifadə VƏRİSLƏR yeni uşaq cədvəli ilə ana cədvəl (lər) i arasında davamlı əlaqə yaradır. Valideynlərdəki sxem dəyişiklikləri normal olaraq uşaqlara da yayılır və uşaq cədvəlinin məlumatları, valideyn (lər) in taramalarına daxil edilir.

Eyni sütun adı birdən çox ana cədvəldə mövcuddursa, ana cədvəllərin hər birində sütunların məlumat növləri uyğun gəlmədikdə bir səhv bildirilir. Ziddiyyət yoxdursa, təkrarlanan sütunlar birləşdirilərək yeni cədvəldə tək bir sütun əmələ gətirir. Yeni cədvəlin sütun adı siyahısında miras qalmış bir sütun adı varsa, məlumat növü də miras qalmış sütun (lər) lə uyğun olmalıdır və sütun tərifləri birinə birləşdirilir. Yeni cədvəl açıq şəkildə sütun üçün bir default dəyər təyin edərsə, bu defolt sütunun miras qalmış bəyannamələrindəki hər hansı bir defoltu ləğv edir. Əks təqdirdə, sütun üçün standart dəyərləri təyin edən hər bir valideyn eyni defoltu göstərməlidir, əks halda bir səhv bildiriləcəkdir.

Yoxlayın məhdudiyyətlər, əsasən sütunlarla eyni şəkildə birləşdirilir: birdən çox ana cədvəl və / və ya yeni cədvəl tərifində eyni adlı varsa Yoxlayın məhdudiyyətlər, bu məhdudiyyətlərin hamısı eyni yoxlama ifadəsinə sahib olmalıdır, əks halda bir səhv bildiriləcəkdir. Eyni adda və ifadədə olan məhdudiyyətlər bir nüsxədə birləşdiriləcəkdir. Adının çəkilmədiyinə diqqət yetirin Yoxlayın yeni cədvəldəki məhdudiyyət heç vaxt birləşdirilməyəcək, çünki bunun üçün həmişə bənzərsiz bir ad seçiləcəkdir.

Sütun SAXLAMA parametrlər də ana cədvəllərdən kopyalanır.

The KİMİ bənddə yeni cədvəlin bütün sütun adlarını, onların məlumat növlərini və boş olmayan məhdudiyyətlərini avtomatik olaraq kopyaladığı bir cədvəl göstərilir.

Fərqli deyil VƏRİSLƏR, yaradıldıqdan sonra yeni masa və orijinal masa tamamilə ayrılır. Orijinal cədvəldəki dəyişikliklər yeni cədvələ tətbiq olunmayacaq və yeni cədvəlin məlumatlarını orijinal cədvəlin taramalarına daxil etmək mümkün deyil.

Kopyalanan sütun tərifləri üçün standart ifadələr yalnız bu halda kopyalanacaqdır XÜSUSİYYƏTLƏRİ OLMUŞDUR göstərilir. Varsayılan davranış, yeni cədvəldəki kopyalanan sütunların sıfır defoltlara sahib olması ilə nəticələnən standart ifadələri istisna etməkdir. Nəzərə alın ki, nextval kimi verilənlər bazası modifikasiya funksiyalarını çağıran defoltların kopyalanması orijinal və yeni cədvəllər arasında funksional əlaqə yarada bilər.

Sıfır məhdudiyyətlər həmişə yeni cədvələ köçürülür. Yoxlayın məhdudiyyətlər yalnız bu halda kopyalanacaqdır MÜHAFİZƏLƏR DAHİL göstərilir. Sütun məhdudluğu ilə cədvəl məhdudiyyəti arasında heç bir fərq qoyulmur.

İndekslər, İlkin açar, UNİKALÇIXAR orijinal cədvəldəki məhdudiyyətlər yalnız yeni cədvəldə yaradılacaqdır İNDEKSLƏRDƏ göstərilir. Yeni indekslər və məhdudiyyətlər üçün adlar, orijinalların necə adlandırılmasından asılı olmayaraq, standart qaydalara uyğun olaraq seçilir. (Bu davranış, yeni indekslər üçün mümkün olan təkrarlanan ad uğursuzluqların qarşısını alır.)

SAXLAMA kopyalanan sütun tərifləri üçün parametrlər yalnız bu halda kopyalanacaqdır DEPOLAMA daxil olmaqla göstərilir. Varsayılan davranış istisna etməkdir SAXLAMA parametrlər, nəticədə yeni cədvəldəki kopyalanan sütunlar növə görə standart parametrlərə malikdir. Daha çox məlumat üçün SAXLAMA parametrlərə baxın Bölmə 55.2.

Kopyalanan sütunlar, məhdudiyyətlər və indekslər üçün şərhlər yalnız bu halda kopyalanacaqdır Şərhlər daxil olmaqla göstərilir. Varsayılan davranış şərhləri istisna etməkdir, nəticədə kopyalanan sütunlar və yeni cədvəldəki məhdudiyyətlər şərhsiz qalır.

BÜTÜNLƏR daxil olmaqla qısaldılmış formasıdır ƏLAQƏSİZLİKLƏR VƏ İSTİFADƏLƏRİ İSTİFADƏ EDƏN ŞƏRHLƏRİ OLAN YERLƏR.

Fərqli olmadığını unutmayın VƏRİSLƏR, sütunlar və məhdudiyyətlər KİMİ oxşar adlandırılmış sütun və məhdudiyyətlərlə birləşdirilmir. Eyni ad açıq şəkildə və ya başqa bir yerdə göstərilibsə KİMİ bənd, bir səhv siqnalı verilir.

Bir sütun və ya cədvəl məhdudiyyəti üçün isteğe bağlı bir ad. Məhdudiyyət pozulursa, səhv mesajlarında məhdudiyyət adı mövcuddur, buna görə də məhdudlaşdırıcı adlar kimi col müsbət olmalıdır müştəri tətbiqetmələrinə faydalı məhdudiyyət məlumatlarını çatdırmaq üçün istifadə edilə bilər. (Boşluqlar olan məhdudiyyət adlarını təyin etmək üçün cüt sitatlara ehtiyac var.) Bir məhdudiyyət adı göstərilməyibsə, sistem bir ad yaradır.

Sütunun boş dəyərlər içərməsinə icazə verilmir.

Sütuna sıfır dəyərlər daxil edilməsinə icazə verilir. Bu, standartdır.

Bu bənd yalnız standart olmayan SQL verilənlər bazaları ilə uyğunluq üçün təmin edilmişdir. Yeni tətbiqlərdə istifadəsi dayandırılır.

The Yoxlayın bənddə yeni və ya yenilənmiş sətirlərin daxilolma və ya yeniləmə əməliyyatının müvəffəq olması üçün təmin etməsi lazım olan bir Boole nəticəsi verən bir ifadə ifadə edilir. DOĞRU və ya BİLMƏZ deyə qiymətləndirən ifadələr müvəffəq olur. Hər hansı bir əlavə və ya yeniləmə əməliyyatının YALAN nəticəyə səbəb olması halında səhv istisnası qaldırılır və əlavə və ya yeniləmə verilənlər bazasını dəyişdirmir. Sütun məhdudiyyəti kimi göstərilən yoxlama məhdudiyyəti yalnız həmin sütunun dəyərinə istinad etməlidir, cədvəl məhdudiyyətində görünən ifadə isə bir neçə sütuna istinad edə bilər.

Hazırda, Yoxlayın ifadələr alt sorğu içərə bilməz və ya cari satırın sütunları xaricində dəyişənlərə istinad edə bilməz.

The HƏFTƏSİ bəndində sütun tərifi daxilində görünən sütun üçün standart məlumat dəyəri təyin edilir. Dəyişən olmayan hər hansı bir ifadədir (cari cədvəldəki digər sütunlara alt sorğulara və çapraz istinadlara icazə verilmir). Varsayılan ifadənin məlumat növü sütunun məlumat tipinə uyğun olmalıdır.

Varsayılan ifadə sütun üçün bir dəyər göstərməyən hər hansı bir əlavə əməliyyatında istifadə ediləcəkdir. Bir sütun üçün heç bir borc yoxdursa, standart boşdur.

UNİKAL (sütun məhdudiyyəti)
UNİKAL ( sütun_adı [, . ] ) (masa məhdudiyyəti)

The UNİKAL məhdudiyyət bir cədvəlin bir və ya daha çox sütun qrupunun yalnız unikal dəyərləri ehtiva edə biləcəyini müəyyənləşdirir. Unikal cədvəl məhdudiyyətinin davranışı, birdən çox sütunu əhatə etmək üçün əlavə qabiliyyət ilə sütun məhdudiyyətləri ilə eynidır.

Bənzərsiz bir məhdudiyyət məqsədi üçün sıfır dəyərlər bərabər sayılmır.

Hər bir unikal cədvəl məhdudiyyəti, cədvəl üçün müəyyən edilmiş hər hansı digər unikal və ya əsas açar məhdudlaşdırma ilə adlandırılan sütunlar dəstindən fərqli bir sıra sütun adlandırmalıdır. (Əks təqdirdə iki dəfə sadalanan eyni məhdudiyyət olardı.)

İlkin açar (sütun məhdudiyyəti)
İLK AÇAR ( sütun_adı [, . ] ) (masa məhdudiyyəti)

The İlkin açar məhdudiyyət cədvəlin bir sütununun və ya sütunlarının yalnız unikal (təkrarlanmayan), sıfır dəyərlər ehtiva edə biləcəyini göstərir. Cədvəl üçün sütun məhdudluğu və ya cədvəl məhdudiyyəti kimi yalnız bir əsas açar göstərilə bilər.

Birincil açar məhdudiyyəti, eyni cədvəl üçün müəyyən edilmiş hər hansı bir unikal məhdudiyyət tərəfindən adlandırılan sütunlar dəstindən fərqli bir sütun toplusunu adlandırmalıdır. (Əks təqdirdə, bənzərsiz məhdudiyyət artıqdır və atılacaqdır.)

İlkin açar birləşməsi ilə eyni məlumat məhdudiyyətlərini tətbiq edir UNİKALNULL DEYİL, lakin bir sıra sütun dəstini əsas açar kimi müəyyənləşdirmək həm də sxemin dizaynı haqqında metaməlumat verir, çünki birincil açar digər cədvəllərin bu sütun dəstinə satırlar üçün unikal bir identifikator kimi etibar edə biləcəyini nəzərdə tutur.

İSTİFADƏ [İSTİFADƏ indeks_metodu ] ( xaric_element İLƏ operator [, . ] ) index_parameters [HARADA ( predikat ) ]

The ÇIXAR bənddə göstərilən operator (lər) istifadə edərək göstərilən sütunlarda və ya ifadələrdə müqayisə edildikdə, bu müqayisələrin hamısının geri dönməyəcəyinə zəmanət verən bir istisna məhdudiyyəti müəyyən edilir. DOĞRU. Göstərilən operatorların hamısı bərabərliyi sınayarsa, bu a-ya bərabərdir UNİKAL məhdudiyyət, baxmayaraq ki adi bir bənzərsizlik daha sürətli olacaq. Bununla yanaşı, istisna məhdudiyyətləri sadə bərabərlikdən daha ümumi olan məhdudiyyətləri təyin edə bilər. Məsələn, cədvəldə iki sətrin üst-üstə düşən dairələrin olmamasına dair bir məhdudiyyət təyin edə bilərsiniz (bax. Bölmə 8.8). & amp; amp operator.

İstisna məhdudiyyətləri bir indeks istifadə edərək həyata keçirilir, buna görə hər bir göstərilən operator indeksə giriş metodu üçün uyğun bir operator sinfi ilə əlaqələndirilməlidir (bax. Bölmə 11.9). indeks_metodu. Operatorların komutativ olması tələb olunur. Hər biri xaric_element isteğe bağlı olaraq operator sinfi və / və ya sifariş variantları təyin edə bilər, bunlar CREATE INDEX altında tam təsvir edilmişdir.

The predikat daxili olaraq cədvəlin alt hissəsində bir istisna məhdudiyyəti təyin etməyə imkan verir, bu qismən bir indeks yaradır. Qeyd edək ki, predikat ətrafında mötərizələr tələb olunur.

İSTİFADƏLƏR reftable [ ( refcolumn )] [MATCH kibrit növü ] [SİLİNİR fəaliyyət ] [YENİLƏNMƏDƏ fəaliyyət ] (sütun məhdudiyyəti)
XARİCİ AÇAR ( sütun [,. ]) İSTİFADƏLƏR reftable [ ( refcolumn [,. ])] [MATCH kibrit növü ] [SİLİNİR fəaliyyət ] [YENİLƏNMƏDƏ fəaliyyət ] (masa məhdudiyyəti)

Bu bəndlər yeni bir cədvəlin bir və ya daha çox sütununun bir qrupunun yalnız istinad olunan cədvəlin bəzi sətirindəki istinad sütun (lar) ında dəyərlərə uyğun dəyərlər içərisində saxlamasını tələb edən xarici açar məhdudiyyəti təyin edir. Əgər refcolumn buraxılmışdır, əsas açarı reftable istifadə olunur. İstinad olunan sütunlar istinad olunan cədvəldə təxirə salınmayan unikal və ya əsas açar məhdudiyyətinin sütunları olmalıdır. Xarici açar məhdudiyyətlərinin müvəqqəti cədvəllər və qalıcı cədvəllər arasında müəyyən edilə bilməyəcəyini unutmayın.

İstinad sütununa (lərinə) daxil edilmiş dəyər, verilən cədvəlin dəyərlərinə və verilmiş uyğunluq növündən istifadə edərək istinad sütunlarına uyğunlaşdırılır. Üç uyğunluq növü var: TAM MAŞ, QISMALI OYUNSADƏ OYUN, bu da standartdır. TAM MAŞ bütün xarici açar sütunlar sıfır olmadıqca çox sütunlu xarici açarın bir sütununun sıfır olmasına icazə verməyəcəkdir. SADƏ OYUN Xarici açarın digər hissələri sıfır olduqda, bəzi xarici açar sütunların sıfır olmasına imkan verir. QISMALI OYUN hələ həyata keçirilməyib.

Bundan əlavə, istinad edilən sütunlardakı məlumatlar dəyişdirildikdə, bu cədvəlin sütunlarındakı məlumatlar üzərində müəyyən hərəkətlər edilir. The SİLMƏDƏ bənd istinad olunan cədvəldəki istinad sətri silindiyi zaman yerinə yetiriləcək əməliyyatı müəyyənləşdirir. Eynilə, YENİLƏNİB bənd, istinad olunan cədvəldəki istinad sütununun yeni bir dəyərə yeniləndiyi zaman yerinə yetiriləcək əməliyyatı təyin edir. Sətr yenilənirsə, ancaq istinad olunan sütun həqiqətən dəyişdirilmirsə, heç bir hərəkət edilmir. Xaricində istinad məlumatları HEÇ BİR FƏALİYYƏT məhdudiyyət təxirə salınmış elan olunsa da, yoxlama təxirə salına bilməz. Hər bir bənd üçün aşağıdakı mümkün tədbirlər mövcuddur:

Silinmənin və ya yeniləmənin xarici açar məhdudlaşdırma pozuntusuna səbəb olacağını göstərən səhv çıxarın. Məhdudlaşdırma təxirə salındıqda, bu səhv hələ məhdudlaşma yoxlanılması vaxtında, hər hansı bir istinad sətri mövcud olduqda çıxarılacaqdır. Bu, standart əməliyyatdır.

Silinmənin və ya yeniləmənin xarici açar məhdudlaşdırma pozuntusu yaradacağını göstərən səhv hazırlayın. Bu kimidir HEÇ BİR FƏALİYYƏT istisna olmaqla, çek təxirə salınmaz.

Silinmiş sətrə istinad edən hər hansı bir satırı silin və ya istinad sütununun dəyərini müvafiq olaraq istinad edilən sütunun yeni dəyərinə qədər yeniləyin.

İstinad sütunlarını sıfır olaraq təyin edin.

İstinad sütunlarını ləğv etdikləri dəyərlərə qoyun.

İstinad olunan sütunlar (lər) tez-tez dəyişdirilirsə, xarici açar sütunla əlaqəli istinad tədbirlərinin daha səmərəli yerinə yetirilməsi üçün xarici açar sütuna indeks əlavə etmək ağıllı ola bilər.

Bu, məhdudiyyətin təxirə salına biləcəyinə nəzarət edir. Təxirə salınmayan bir məhdudiyyət hər əmrdən dərhal sonra yoxlanılacaq. Təxirə salınan məhdudiyyətlərin yoxlanılması əməliyyatın sonuna qədər təxirə salına bilər (SET CONSTRAINTS əmrindən istifadə edərək). MÜVAFİQ DEYİL u mənimdir. Hal-hazırda, yalnız UNİKAL, İlkin açar, ÇIXARİSTİFADƏLƏR (xarici açar) məhdudiyyətlər bu müddəanı qəbul edir. NULL DEYİLYoxlayın məhdudiyyətlər təxirə salınmaz.

Əvvəlcə təcili
Əvvəlcə TƏHLÜKƏ EDİLİB

Bir məhdudiyyət təxirə salına bilərsə, bu maddə məhdudiyyəti yoxlamaq üçün standart vaxtı göstərir. Məhdudiyyət varsa Əvvəlcə təcili, hər açıqlamadan sonra yoxlanılır. Bu standartdır. Məhdudiyyət varsa Əvvəlcə TƏHLÜKƏ EDİLİB, yalnız əməliyyatın sonunda yoxlanılır. Məhdudluğu yoxlama müddəti SET CONSTRAINTS əmri ilə dəyişdirilə bilər.

Bu bənd bir cədvəl və ya indeks üçün isteğe bağlı saxlama parametrlərini müəyyənləşdirir Daha çox məlumat üçün Saxlama Parametrlərinə baxın. The İLƏ bir masa bəndinə də daxil edilə bilər OIDS = DOĞRU (və ya sadəcə OIDS) yeni cədvəlin sətirlərində onlara təyin olunmuş OID (obyekt identifikatorları) olmalıdır və ya OIDS = YALAN satırlarda OID olmamalı olduğunu təyin etmək. Əgər OIDS göstərilməyib, standart ayar default_with_oids konfiqurasiya parametrindən asılıdır. (Yeni cədvəl OID olan hər hansı bir cədvəldən miras alırsa, o zaman OIDS = DOĞRU komanda desə də məcbur edilir OIDS = YALAN.)

Əgər OIDS = YALAN göstərildiyi və ya nəzərdə tutulduğu halda, yeni cədvəl OID-ləri saxlamır və daxil edilmiş sətir üçün OID təyin olunmayacaqdır. Bu, ümumiyyətlə dəyərli sayılır, çünki OID istehlakını azaldacaq və bununla da 32 bitlik OID sayğacının bağlanmasını təxirə salacaq. Sayğac ətrafa büküldükdən sonra, OID-lərin artıq unikal olduğu qəbul edilə bilməz və bu da onları daha az faydalı edir. Bundan əlavə, OID-lərin bir cədvəldən xaric edilməsi, cədvəlin hər sətirdə 4 bayt (çox maşınlarda) diskdə saxlanması üçün lazım olan yeri azaldır və performansı bir qədər yaxşılaşdırır.

OID-lər yaradıldıqdan sonra onu cədvəldən silmək üçün ALTER TABLE istifadə edin.

Bunlar buna bərabər olan köhnəlmiş sintaksislərdir İLƏ (OIDS)İLƏ (OIDS = YALAN)sırasıyla. Hər ikisini də vermək istəsəniz OIDS ayar və saxlama parametrlərini istifadə etməlisiniz İLƏ (.) sintaksis yuxarıda baxın.

Bir əməliyyat blokunun sonunda müvəqqəti masaların davranışı istifadə edərək idarə edilə bilər TƏHLÜKƏDƏ. Üç seçim bunlardır:

Əməliyyatların sonunda heç bir xüsusi tədbir görülmür. Bu, standart davranışdır.

Müvəqqəti cədvəldəki bütün sətirlər hər bir əməliyyat blokunun sonunda silinəcəkdir. Əslində, hər bir işdə avtomatik bir TRUNCATE edilir.

Cari əməliyyat blokunun sonunda müvəqqəti cədvəl atılacaq.

The masa sahəsi yeni cədvəlin yaradılacağı masa boşluğunun adıdır. Göstərilməyibsə, cədvəl müvəqqətidirsə, default_tablespace və ya temp_tablespaces müraciət olunur.

İNDEX TABLESPACE İSTİFADƏSİ masa sahəsi

Bu bənd indeksin a ilə əlaqəli olduğu masa boşluğunun seçilməsinə imkan verir UNİKAL, İlkin açar, və ya ÇIXAR məhdudiyyət yaradılacaqdır. Göstərilməyibsə, cədvəl müvəqqətidirsə, default_tablespace və ya temp_tablespaces müraciət olunur.

Saxlama parametrləri

The İLƏ bənddə göstərilə bilər saxlama parametrləri cədvəllər və a ilə əlaqəli indekslər üçün UNİKAL, İlkin açar, və ya ÇIXAR məhdudiyyət. İndekslər üçün saxlama parametrləri CREATE INDEX sənədləşdirilmişdir. Hazırda masalar üçün mövcud olan saxlama parametrləri aşağıda verilmişdir. Hər bir parametr üçün, qeyd edilmədiyi təqdirdə, eyni adla əvvəl əlavə edilmiş əlavə bir parametr var tost., əgər varsa cədvəlin ikincil TOAST cədvəlinin davranışını idarə etmək üçün istifadə edilə bilər (TOAST haqqında daha çox məlumat üçün Bölmə 55.2-ə baxın). TOAST cədvəlinin autovakum_ * yoxsa ana cədvəlindəki dəyərlər toast.autovacuum_ * parametrlər quruldu.

Bir cədvəl üçün dolğunluq 10 ilə 100 arasındakı bir nisbətdir. 100 (tam qablaşdırma) borcludur. Daha kiçik bir doldurucu göstərildikdə, INSERT əməliyyatlar cədvəl səhifələrini yalnız göstərilən faizə qədər paketləyin, hər səhifədəki qalan boşluq həmin səhifədəki satırları yeniləmək üçün qorunur. Bu verir YENİLƏNİB satırın yenilənmiş nüsxəsini orijinal ilə eyni səhifədə yerləşdirmək şansı, fərqli bir səhifəyə yerləşdirməkdən daha səmərəlidir. Girişləri heç vaxt yenilənməyən bir cədvəl üçün tam qablaşdırma ən yaxşı seçimdir, lakin çox yenilənmiş cədvəllərdə daha kiçik dolğunluqlar uyğun gəlir. Bu parametr TOAST cədvəlləri üçün təyin edilə bilməz.

autovacuum_enabled, tost.autovacuum_enabled (boolean)

Müəyyən bir masadakı avtovakum deonunu aktivləşdirir və ya söndürür. Doğru olarsa, avtovakum servisi a VAKUM güncəllənmiş və ya silinmiş kanalların sayı aşıldıqda müəyyən bir cədvəldə əməliyyat autovacuum_vakuum_streshold üstəgəl autovacuum_vacuum_scale_factor hal-hazırda əlaqədə olduğu təxmin edilən canlı kanalların sayından qat. Eynilə, bir TƏHLİL daxil edilmiş, yenilənmiş və ya silinmiş kanalların sayını keçdikdə əməliyyat autovacuum_analyze_threshold üstəgəl autovacuum_analyze_scale_factor hal-hazırda əlaqədə olduğu təxmin edilən canlı kanalların sayından qat. Yanlış olduqda, əməliyyat cədvəlinin sarılmasının qarşısını almaq istisna olmaqla, bu cədvəl avtomatik vakumlanmayacaq. Sarışın qarşısını almaq haqqında daha çox məlumat üçün Bölmə 23.1.4-ə baxın. Bu dəyişənin dəyərini avtovakum parametrindən aldığını müşahidə edin.

autovacuum_vakuum_streshold, tost.autovacuum_vacuum_ eşik (tam)

Başlamazdan əvvəl yenilənmiş və ya silinmiş səslərin minimum sayı a VAKUM müəyyən bir masa üzərində əməliyyat.

autovacuum_vacuum_scale_factor, tost.autovacuum_vacuum_scale_factor (üzmək4)

Üçün çarpan istirahət əlavə etmək autovacuum_vakuum_streshold.

Başlamazdan əvvəl daxil edilmiş, yenilənmiş və ya silinmiş minimal sayların sayı TƏHLİL müəyyən bir masa üzərində əməliyyat.

Üçün çarpan istirahət əlavə etmək autovacuum_analyze_threshold.

autovacuum_vacuum_cost_ gecikmə, tost.autovacuum_vacuum_cost_ gecikmə (tam)

autovacuum_vacuum_cost_limit, tost.autovacuum_vacuum_cost_limit (tam)

autovacuum_freeze_min_age, tost.autovacuum_freeze_min_age (tam)

Xüsusi vakum_freeze_min_age parametri. Qeyd edək ki, avtovakum masaya uyğun qurma cəhdlərini laqeyd yanaşacaq autovacuum_freeze_min_age yarım sistem genişliyindəki autovacuum_freeze_max_age parametrindən daha böyükdür.

autovacuum_freeze_max_age, tost.autovacuum_freeze_max_age (tam)

Xüsusi autovacuum_freeze_max_age parametri. Qeyd edək ki, avtovakum masaya uyğun qurma cəhdlərini görməzdən gələcəkdir autovacuum_freeze_max_age sistem səviyyəsindəki parametrdən daha böyükdür (yalnız daha kiçik təyin edilə bilər).

autovacuum_freeze_table_age, tost.autovacuum_freeze_table_age (tam)


OGR - Açıq Yerleşim Konsorsiumu Sadə Xüsusiyyətlər formatlar (Shapefile, MapInfo, GMT, TIGER)

NCL 5.1.1 ilə isteğe bağlı GDAL / OGR kitabxanası müxtəlif OGR fayl formatlarını oxumaq üçün istifadə olunur. OGR, Açıq Yerleşim Konsorsiumunun "Sadə Xüsusiyyətlər" API tətbiqidir. NCL 5.1.1-də dəstəklənən spesifik formatlar ESRI Shapefiles, MapInfo və GMT formatları və klassik TIGER formatıdır. Bu, beta səviyyəli bir qabiliyyət hesab olunur.

Bu formatlardakı məlumatlar ümumiyyətlə həndəsəni, məkansız olmayan atributları, kartoqrafik proyeksiyanı, indeksləri və s. Birlikdə kodlayan bir sıra fayllardan ibarətdir. bütün sənədlər dəstinin NCL üçün mövcud olması vacibdir. Məsələn, Shapefiles üçün şəkilçi .shp lakin a Shapefile düzgün şəkildə 4 və ya daha çox adlanan sənədlərdən ibarətdir .dbf, .shx, .prj əlavə olaraq şəkilçilər .shp fayl.

İstifadəçi üçün OGR məlumatları bir sıra olaraq nəzərdən keçirilir xüsusiyyətləri həndəsə və digər məkan olmayan sahələrdən ibarətdir. Müəyyən bir OGR sənədindəki boşluq olmayan məlumatlar birbaşa bir NCL dəyişəninə uyğunlaşdırılır. Məkan olmayan sahələr xüsusiyyətlərlə 1: 1 münasibətində mövcuddur, beləliklə ith xüsusiyyəti üçün məlumatlar NCL dəyişənlərinin ith elementlərində tapılır.

The həndəsə çünki bir xüsusiyyət mürəkkəb ola bilər, lakin bir xüsusiyyət bir və ya daha çox sətirdən ibarət ola bilər seqmentlər, bu da öz növbəsində çox xəttləri və ya çoxbucaqları təmsil edə bilər. Həndəsənin xüsusiyyətlərlə əlaqəsi sadə 1: 1 yazışması olmadığı üçün həndəsəni xüsusi NCL dəyişənlərinə kodlaşdırmaq üçün aşağıdakı konvensiya qəbul edilmişdir.

  • həndəsə (i, 0) = ith xüsusiyyəti üçün birinci seqmentin seqmentləri dəyişəninə indeks
  • həndəsə (i, 1) = ith xüsusiyyətinə aid hissələrin sayı
  • seqmentləri (j, 0) = j hissəsinin birinci nöqtəsinin x, y, z massivlərinə daxil olan indeks
  • seqmentlər (j, 1) = j seqmenti təşkil edən nöqtələrin sayı

Həndəsə koordinatları x, y və isteğe bağlı z dəyişənlərində saxlanılır. Bunlar ayrı-ayrı seqmentləri təşkil edən qismən sıralanmış koordinat siyahılarını ehtiva edən bir ölçülü massivlərdir.

Rahatlıq üçün bir neçə qlobal atribut müəyyən edilmişdir. Atributu layer_name OGR sənədindən çıxarıldığı kimi xüsusiyyətlərin adını ehtiva edir. Atributu geometry_type xüsusiyyət həndəsəsinin nöqtələr, çox xətlər və ya çoxbucaqlılardan ibarət olub olmadığını göstərir. Qalan atributlar həndəsə və seqment dəyişkənlərinin ikinci indeksinə daxil olan simvolik göstəricilər kimi nəzərdə tutulur və sərt kodlaşdırma indekslərinə üstünlük verilməlidir: geom_segIndex (= 0), geom_numSegs (= 1), segs_xyzIndex (= 0), və segs_numPnts (= 1). OGR fayl dəyişənləri koordinat dəyişənləri və ya dəyişən atributları ehtiva etmir, çünki GDAL / OGR tətbiqi bu kimi istifadə edilə bilən məlumatları açıqlamır.

Aşağıdakı NCL çıxarışı polylines-dan ibarət olan xüsusiyyətlər üçün həndəsənin necə çəkiləcəyini göstərir:


Videoya baxın: Mustevi fiqurlar. (Oktyabr 2021).