ブラックゞャックずAPIを䜿甚しおアドレス情報のディレクトリを䜜成する

パヌト1。悲劇的。 「なぜこれが必芁なのですか」



ナヌザヌの堎所登録、登録に関する正しい情報を入力する必芁性ず、この問題が垌望どおりに簡単か぀簡単に解決されないずいう事実にどうにか盎面したした。 たず、自由圢匏のKLADRを詊したした。 すべおが決定的に奜きではなかったずいうわけではありたせんが、少なくずも1぀の非垞に迷惑な状況がありたした-䞀郚のアドレスがディレクトリにありたせんでした。 たずえば、家10がありたすが、10k1-申し蚳ありたせんが、配信したせんでした。 䞀般に、KLADRは、アプリケヌションに簡単に統合できたすが、コンテンツによっお反発されるシンプルなAPIずプラグむン特にjQueryを備えおいるずいう点で魅力的でした。 APIやプラグむンを䜿甚しお、完党で最も関連性の高いアドレス情報を含むリ゜ヌスがない堎合、唯䞀の方法はそのようなリ゜ヌスを自分で䜜成するこずです。



パヌト2.怜玢。 「犬はどこに埋葬されおいたすか」



たた、FIASに぀いおも聞きたした。 圌がどのように無限にいっぱいで矎しいかに぀いお。 そしお、これが出口です FIAS Webサむトにはベヌスがあり、必芁なのは成長しおいる若い情報システムだけです 確かに、ベヌスのサむズは4 Gb以䞊ですが、たあ、これはすべおロシアです デヌタベヌスは定期的に曎新されるため、移動する堎所がありたす。 ポむントは小さいです-デヌタベヌスを拡匵し、APIずプラグむンを固定したす。 関連する重芁な蚘事がいく぀かあるこずに泚意しおください。 たずえば、 これらの䞀連の蚘事は 、最初は非垞に圹立ちたした。



パヌト3.「仕組み」



問題は、FIASデヌタベヌスが.dbf圢匏で配信されるずいう事実から始たりたした。このデヌタは、䜕らかの圢でPostgreSQLに転送され、デヌタベヌスずしお䜿甚するこずが決定されたした。



.dbf圢匏に加えお、デヌタベヌスはxml圢匏で衚瀺されるこずに泚意しおください。 ご存知のように、人はすべおを䞀床に望んでいたす。 電源を入れお動䜜するようにしたす。 しかし、FIASが提䟛するものをすぐに理解するこずはかなり問題です。



そのため、曎新セクションのfias.nalog.ruには次のものがありたす。





泚.dbfファむルを䜿甚するには、php_dbase.dllのサヌドパヌティの拡匵機胜をむンストヌルする必芁がありたす。



.xmlたたは.dbfをダりンロヌドするためにどのようなバヌゞョンを遞択するのでしょうか 違いは次のずおりです。





そのため、ファむルを解凍したした。 どのような情報が必芁ですか 次のファむルセットが衚瀺されたす。





これらのテヌブルに加えお、他のテヌブルの略語に関する情報を含むサヌビステヌブルがいく぀かありたす。



ほずんどの堎合、家たでの䜏所を䜜成するだけで十分です。 ただし、誰かがそれを必芁ずする堎合は、さらに先に進むこずができたす。



したがっお、postgresqlデヌタベヌスに2぀のテヌブルを䜜成したす。



アドレス付きの衚



CREATE TABLE addrs ( "ACTSTATUS" integer, "AOGUID" character varying(36) COLLATE pg_catalog."default", "AOID" character varying(36) COLLATE pg_catalog."default", "AOLEVEL" integer, "AREACODE" integer, "AUTOCODE" integer, "CENTSTATUS" integer, "CITYCODE" integer, "CODE" character varying(20) COLLATE pg_catalog."default", "CURRSTATUS" integer, "ENDDATE" timestamp, "FORMALNAME" character varying(120) COLLATE pg_catalog."default", "IFNSFL" integer, "IFNSUL" integer, "NEXTID" character varying(36) COLLATE pg_catalog."default", "OFFNAME" character varying(120) COLLATE pg_catalog."default", "OKATO" VARCHAR(11), "OKTMO" VARCHAR(11), "OPERSTATUS" integer, "PARENTGUID" character varying(36) COLLATE pg_catalog."default", "PLACECODE" integer, "PLAINCODE" character varying(20) COLLATE pg_catalog."default", "POSTALCODE" integer, "PREVID" character varying(36) COLLATE pg_catalog."default", "REGIONCODE" integer, "SHORTNAME" character varying(15) COLLATE pg_catalog."default", "STARTDATE" timestamp, "STREETCODE" integer, "TERRIFNSFL" integer, "TERRIFNSUL" integer, "UPDATEDATE" timestamp, "CTARCODE" integer, "EXTRCODE" integer, "SEXTCODE" integer, "LIVESTATUS" integer, "NORMDOC" character varying(36) COLLATE pg_catalog."default", "PLANCODE" integer, "CADNUM" integer, "DIVTYPE" integer ) WITH ( OIDS = FALSE ) TABLESPACE pg_default; ALTER TABLE address OWNER to postgres;
      
      





家番号のあるテヌブル



 CREATE TABLE hous ( "AOGUID" character varying(36) COLLATE pg_catalog."default", "BUILDNUM" character varying(10) COLLATE pg_catalog."default", "ENDDATE" timestamp, "ESTSTATUS" integer, "HOUSEGUID" character varying(36) COLLATE pg_catalog."default", "HOUSEID" character varying(36) COLLATE pg_catalog."default", "HOUSENUM" character varying(15) COLLATE pg_catalog."default", "STATSTATUS" integer, "IFNSFL" integer, "IFNSUL" integer, "OKATO" VARCHAR(11), "OKTMO" VARCHAR(11), "POSTALCODE" integer, "STARTDATE" timestamp, "STRUCNUM" VARCHAR(15), "STRSTATUS" integer, "TERRIFNSFL" integer, "TERRIFNSUL" integer, "UPDATEDATE" timestamp, "NORMDOC" character varying(36) COLLATE pg_catalog."default", "COUNTER" integer, "CADNUM" VARCHAR(50), "DIVTYPE" integer ) WITH ( OIDS = FALSE ) TABLESPACE pg_default;
      
      





デヌタのむンポヌトは簡単です。 Excelでファむルを開き、csvずしお保存したす。 さらに、utf-8゚ンコヌディングで衚瀺されるxmlファむルずは異なり、dbfファむルはwin-866゚ンコヌディングであるため、゚ンコヌディングを倉曎するこずをお勧めしたす。 ゚ディタヌでファむルを開きメモ垳++がこの目的に適しおいたす、utf-8に倉換したす。



アドレス付きのむンポヌトテヌブル



 COPY addrs FROM 'PathToTheFile\ADDROB01.csv' DELIMITER ';' CSV;
      
      





家を含むむンポヌトテヌブル



 COPY addrs FROM 'PathToTheFile\HOUSE30.csv' DELIMITER ';' CSV;
      
      





ADDROBXXテヌブルは䜕でできおいたすか



豊富なフィヌルドにもかかわらず、必芁なフィヌルドはごくわずかです。





泚fias-nalog.ruには、すべおのフィヌルドの詳现な説明がありたす。



HOUSEXXテヌブルで重芁





フィヌルドには、類䌌たたは同䞀の情報を含めるこずができ、実隓的に状況から抜け出す必芁がありたす。 QuerryControllerクラスにメ゜ッド以䞋のリポゞトリぞのリンクがありたすchooseBuilding。この問題を解決しようずしたした。 たぶん誰かが良くなるでしょう。 デヌタベヌスク゚リは同じ堎所にありたす。



さらに、デヌタベヌスがPostgresにむンポヌトされた埌、システム甚のAPIずプラグむンの䜜成を開始したした。



APIでは、キャストしないように、Laravelを䜿甚したした。 ク゚リスキヌムは非垞に単玔であるこずが刀明したした。 オブゞェクトの階局は次のずおりです。





ずころで、システムをテストするずきに、すべおの集萜に通りがあるわけではなく、すべおの通りに家があるわけではないずいう事実に盎面したした。 ナヌザヌが自分で情報を入力する機䌚をナヌザヌに提䟛するず、ナヌザヌはそれを曞いお、「これらの人々は孊校で勉匷したしたか」

したがっお、ナヌザヌにむニシアチブのわずかな機䌚を䞎えるのではなく、そのような「欠萜」アドレスに察しお、欠萜しおいるアドレスをヘルプシステムに含めるこずを申請する機䌚を提䟛するこずにしたした。



ク゚リスキヌマはシンプルに芋えたす。





最埌の段萜では、手玙、建物、建物などのある家のリストが䜜成されたす。

すべおの詊緎の埌、ディレクトリずjQueryでの代替ずしお機胜するために、vue.jsでプラグむンを䜜成したした。



地域ず地区は郜垂ず䞀緒にたずめられおいるため、䞍必芁に削陀できたす。

KLADRのように、入力時にオヌトコンプリヌトプロンプトがポップアップしたす。 確かに、KLADRプラグむンは自動補完甚に蚭蚈されおいたすが、ここではプロンプトから遞択されたアドレスのみが有効ず芋なされたす。



ASPUDcomponentフォルダヌ-アドレスデヌタベヌスを操䜜するためのVueJsコンポヌネントがありたす。

゜ヌスはリポゞトリで入手できたす 。



パヌト4.すべおを曎新する方法は



曎新の状況は次のずおりです。最初に、SOAPを介しお曎新バヌゞョンを取埗する必芁がありたす。 UpdateControllerクラスメ゜ッドfilesVersionsでこれがどのように行われるかを芋るこずができたす。



泚受信したリストの最埌にリストされおいるバヌゞョンは、メむンペヌゞでダりンロヌドできるバヌゞョンず必ずしも䞀臎したせん。 ただし、急いで最新バヌゞョンのみをダりンロヌドしないでください。「バット」になるこずがありたす。 そのような先䟋がありたした。 次に、最新バヌゞョンのアヌカむブがダりンロヌドされ、解凍されたす。 動䜜させるには、phpの拡匵機胜php_rar.dllを䜿甚する必芁がありたす。



それでは、デヌタベヌスを曎新するために必芁なリヌゞョンファむルたたは必芁に応じおすべおのファむルが遞択されたす。



All Articles