рдШрд░ рдХрд╛ рдкрддрд╛ рд╕рд╣реА рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВ?

рдХреИрд╕реЗ рдХрд░ рд╕реЗрд╡рд╛, OpenStreetMap, рдФрд░ InterSystems IRIS
рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╕рд╛рдл рдкрддреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ


рдЫрд╡рд┐
рдкреАрдЯрд░ рдмреНрд░реБрдЧрд▓ рдж рдпрдВрдЧрд░, рдкреЗрдЗрдВрдЧ рдж рдЯреИрдХреНрд╕ (рдж рдЯреИрдХреНрд╕ рдХрд▓реЗрдХреНрдЯрд░), 1640

рдореЗрд░реЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ , рд╣рдордиреЗ рд╕рд┐рд░реНрдл рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рддрд╣ рдХреЛ рд╕реНрдХрд┐рдо рдХрд┐рдпрд╛ рдерд╛ред рдЪрд▓реЛ рд╣рдорд╛рд░реА рдЯреЛрд╣ рд▓реЗрддреЗ рд░рд╣реЗрдВред рдЖрдЬ рдХрд╛ рд╡рд┐рд╖рдп рдХрдард┐рди рд╣реИред рдпрд╣ рдХрд╛рдлреА рдмрдбрд╝рд╛ рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ: рд╣рдо рдХрд╛рдлреА рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рд╕рдм рд░реИрдо рдореЗрдВ рдПрдХ рдмрд╛рд░ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдФрд░ рдЗрд╕рдореЗрдВ рд╕реЗ рдХреБрдЫ рднреА рдбреНрд░рд╛рдЗрд╡ рдкрд░ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛ (рдЕрдВрддрд░рд┐рдХреНрд╖ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣рд╛рдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд░рджреНрджреА рд╣реИ)ред рд╣рдорд╛рд░реЗ рд╡рд┐рд╖рдп рдХрд╛ рдирд╛рдо FIAS DB рд╣реИ : рд╕рдВрдШреАрдп рд╕реВрдЪрдирд╛ рдкрддрд╛ рдкреНрд░рдгрд╛рд▓реА рдбреЗрдЯрд╛рдмреЗрд╕ - рд░реВрд╕ рдореЗрдВ рдкрддреЗ рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ред рд╕рдВрдЧреНрд░рд╣ 5.5 рдЬреАрдмреА рд╣реИред рдФрд░ рдпрд╣ рдПрдХ рд╕рдВрдХреБрдЪрд┐рдд XML рдлрд╝рд╛рдЗрд▓ рд╣реИред рдирд┐рд╖реНрдХрд░реНрд╖рдг рдХреЗ рдмрд╛рдж, рдпрд╣ рдПрдХ рдкреВрд░реНрдг 53 рдЬреАрдмреА (рдирд┐рд╖реНрдХрд░реНрд╖рдг рдХреЗ рд▓рд┐рдП 110 рдЬреАрдмреА рдЕрд▓рдЧ рд╕реЗрдЯ) рд╣реЛрдЧрд╛ред рдФрд░ рдЬрдм рдЖрдк рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ 110 рдЬреАрдмреА рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдкрд░реНрдпрд╛рдкреНрдд рд░реИрдо рднреА рдирд╣реАрдВ рд╣реЛрдЧреАред

рдпрд╣ рд╕рдм рдареАрдХ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрдк рдЦреБрджрд╛рдИ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдкрддрд╛ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдФрд░ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдп рдУрдкрди-рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ: OpenAddresses ред рдЙрдирдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рднреА рдмрдбрд╝реЗ рд╣реЛрдВрдЧреЗред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрдирдХреЗ рдирдХреНрд╢реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЦрд╛рд▓реА рд╕реНрдерд╛рди рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░реВрд╕ рд▓рдЧрднрдЧ рдЦрд╛рд▓реА рд╣реИред рдЗрд╕ рдЖрд░реНрдХрд╛рдЗрд╡ рдХрд╛ рдЖрдХрд╛рд░ 10 рдЬреАрдмреА рд╣реИред

рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдЪреАрдЬреЛрдВ рдХреЛ рдкрд╣рд▓реЗ, рд╣рдо рдХрд╛рдлреА рдкреНрд░рд╕рд┐рджреНрдз рдкрд░рд┐рдпреЛрдЬрдирд╛ OpenStreetMaps рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд╛рдж рд╕реНрд╡рдпрдВрд╕реЗрд╡рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдФрд░ рдмрд╣реБрднрд╛рд╖реА рд╣реИред рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЕрднреА рддрдХ 2018 рдж рдлреНрд░реА рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдлрд╛рдЙрдВрдбреЗрд╢рди рдкреБрд░рд╕реНрдХрд╛рд░ рдорд┐рд▓рд╛ рд╣реИ ред рдЕрднреА, рдПрдХ рд╕рдВрдкреВрд░реНрдг XML рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкреВрд░реЗ рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдЖрдХрд╛рд░ 74 GB рд╣реИред

рдкрддреЛрдВ рдХреА рдмрд╛рдд рдХрд░реЗрдВ, рддреЛ рдореИрдВ рдбрдХрдбрдХреВрдЧреЛ рд╕реЗ рдХреБрдЫ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдЦрдмрд░реЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬреЛ рдЖрдЬ рддрдХ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рдЦреЛрдЬ рдЗрдВрдЬрди рд╣реИ, рдЬрд┐рд╕рдиреЗ рдПрдкреНрдкрд▓ рдореИрдкреНрд╕ рдореЗрдВ рдЕрдкрдиреЗ рдХрджрдо рдХреА рдШреЛрд╖рдгрд╛ рдХреАред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, Apple MapKit JS рдХреЗ рд▓рд┐рдПред рд╣рдорд╛рд░реЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ "рдмреЗрд╣рддрд░ рдкрддрд╛ рдЦреЛрдЬред" рдХреНрдпрд╛ Apple рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛ рдХреЛ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдФрд░ рдЙрд╕рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рднреА рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ? рд╣рдо рдкрд░ рдирдЬрд░ рд░рдЦрдиреА рд╣реЛрдЧреА ...

рддреЛ, рдпрд╣рд╛рдБ рдЪреБрдиреМрддреА рд╣реИред рд╣рдо рдЗрд╕ рд╕рднреА рдкрддрд╛ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдЖрд╕рд╛рди рдЙрдкрдпреЛрдЧ рдХреЗ рднрдВрдбрд╛рд░ рдореЗрдВ рдХреИрд╕реЗ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдПрдХ рдЖрд╕рд╛рди рдПрдкреАрдЖрдИ (рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдкрд╛рдпрдерди рдореЗрдВ) рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдФрд░ рд╣рдорд╛рд░реЗ рдкреНрдпрд╛рд░реЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЛ рдЗрд╕ рднрд╛рд░реА рдмреЛрдЭ рдХреЗ рддрд╣рдд рдврд╣рдиреЗ рд╕реЗ рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВ? рдЖрдЗрдП рдЗрд╕ MicroBigData, mD рдпрд╛ forBD рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдХрд╣реЗрдВред

рдмрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рд░ рдбреЗрд╡рд▓рдкрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд╡рд┐рдк рд╕реБрдирд╛ рд╣реИред рдПрдбреНрд░реЗрд╕ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдкреНрд▓реЗрд╕реЗрдиреИрдо рдХреА рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рдЪреАрдЬ рд╣реИред рдореБрдЭреЗ рдареАрдХ рд╕реЗ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдХрд┐рддрдирд╛ рдкрддрд╛ рдбреЗрдЯрд╛ рдЕрдк рдЯреВ рдбреЗрдЯ рд╣реИред рдЖрдЦрд┐рд░рдХрд╛рд░, рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреНрд╖реЗрддреНрд░, рд╢рд╣рд░ рдФрд░ рд╕рдбрд╝рдХреЗрдВ рд╣реИрдВред рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдХрд┐рд╕реА рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред рдРрд╕реЗ рдкрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЖрдк рдХрд┐рд╕реА рдХреЛ рдвреВрдВрдв рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЙрдиреНрд╣реЗрдВ рдкреИрдХреЗрдЬ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред рдлрд┐рд░ рдкрд╛рд╕рдкреЛрд░реНрдЯ рдФрд░ рдЕрдиреНрдп рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рд╣реИред рдФрд░ рд╢рд╛рдпрдж рд╡рд╣рд╛рдБ рдХреБрдЫ рдХрд╛рд░реНрдпрд╛рд▓рдп рдпрд╛ рдореАрд▓ рдХрд╛ рдкрддреНрдерд░ рдХрд╛ рдкрддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдиреЗ рдЖрдкрдХреЛ рд╕реБрдЭрд╛рдпрд╛ рд╣реИред рддреЛ рдЖрдкрдХреЛ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдХрд╣рд╛рдВ рд╕реЗ рд▓рд╛рдПрдВ?

рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЗ рд▓рд┐рдП рд▓реЗрдЦрд╛рдВрдХрди рдХреЗ рдмрд┐рдирд╛, рд╕рд░рд▓рддрдо рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдЖрджрд┐рдо рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд╕рд░рд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╢рд╛рдмреНрджрд┐рдХ (рдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реНрдерд┐рд░рд╛рдВрдХ) рд╣реЛрддреЗ рд╣реИрдВред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ рдХрд░рдиреЗ рджреЗрдВред рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдЦреБрдж рдХреЛ рдХреИрд╕реЗ рдмрдЪрд╛рдпрд╛ рдЬрд╛рдП, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдХрд╡рд░ рдХрд┐рдпрд╛ рд╣реИ ред

рдХрдХреНрд╖рд╛ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдиреАрдЪреЗ рд▓реЗрдВред рдПрдХ рдкрд╛рдареНрдпрдкреБрд╕реНрддрдХ рдХрд╛ рдорд╛рдорд▓рд╛ , рд╕рдВрдпреБрдХреНрдд рд░рд╛рдЬреНрдп рдЕрдореЗрд░рд┐рдХрд╛ рдХреЗ рдкрддреЗ рдХреЗ рд░реВрдк рдореЗрдВ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рд░реВрд╕реА рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдпреЛрдЬрди рдХреЗ рд╕рд╛рде: рдЬрд╝рд┐рдк рдХреЗ рдмрдЬрд╛рдп рдкреЛрд╕реНрдЯрдХреЛрдбред рдореИрдВ рднреА рдкреЛрд╕реНрдЯрд▓ рдХреЛрдб рдХреЛ рдПрдХ рдирдВрдмрд░ рдореЗрдВ рдмрджрд▓ рджреВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдЪреАрдЬреЛрдВ рдХреЛ рдПрдХ рд╕рдорд╛рди рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛ред рдЬрд┐рд╕ рдХрд┐рд╕реА рдиреЗ рднреА рднрд╛рд╖рд╛ (рдСрдмреНрдЬреЗрдХреНрдЯрд╕реНрдХреНрд░рд┐рдкреНрдЯ) рдХреЛ рддреБрд░рдВрдд рдорд╛рдиреНрдпрддрд╛ рджреА рд╣реИ рдЙрд╕реЗ "рдЬреИрд╕реЗ" рдПрдХ рдорд╛рдирд╛рд░реНрде рдорд┐рд▓реЗрдЧрд╛ред

Class Sample.Address Extends %Persistent { Property streetName As %String; Property cityName As %String; Property areaName As %String; Property postalCode As %String; } 

рдмреЗрд╢рдХ, рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдмреЗрдИрдорд╛рдиреА рд╕реЗ рд░реЛрдПрдВрдЧреЗ, рдпрд╣ рдХрд╣рддреЗ рд╣реБрдП рдХрд┐ рд╕рднреА рд╢рд╛рдмреНрджрд┐рдХ рд╡рд╕реНрддреБ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рд░рд╣реЗ рд╣реИрдВред рдЬрд┐рд╕рдиреЗ рднреА рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рдЦреЗрддреЛрдВ рдХреЛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реБрдП рд╕реБрдирд╛ рд╣реИ? рдЪрд▓реЛ рдЕрдм рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдРрд╕реЗ рд╣реА рдЫреЛрдбрд╝ рджреЗрдВред рдпрд╣ рдХрд╛рдлреА рд╕реНрдкрд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдФрд░ рдХреЛрдИ рднреА рдЫрд╛рддреНрд░ рдЗрд╕реЗ рд╕рдордЭ рд╕рдХрддрд╛ рд╣реИред

рджрд░рдЕрд╕рд▓, рдмрд╕ рдЗрддрдирд╛ рд╣реА рдЪрд╛рд╣рд┐рдПред рд╣рдо рдЦреЗрддреЛрдВ рдореЗрдВ рднрд░ рдЧрдПред рдЙрдиреНрд╣реЗрдВ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд┐рдпрд╛ред рдЙрдиреНрд╣реЗрдВ рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕реМрдВрдк рджрд┐рдпрд╛ред рдХреЛрдИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗрдЧрд╛ред рдпрд╣ рд╕рдм рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдФрд░ рдпрд╣ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ!

рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХреБрдЫ рд╢рдмреНрджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдорд╛рд░рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдбреНрд░реЗрд╕ рдХреНрдпрд╛ рд╣реИ? рдпрд╣ рд╕рд┐рд░реНрдл рдЯреЗрдХреНрд╕реНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдЖрдкрддреНрддрд┐рдпрд╛рдВ рдЬреЛ рдкреЙрдк рдЕрдк рд╕рдВрджрд░реНрдн рд╕реЗ рдЖрддреА рд╣реИрдВ: рдЬреЛ рдЗрд╕ рдкрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╡реЗ рдХрд┐рд╕ рд░реВрдк рдореЗрдВ рдФрд░ рдХрд┐рд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдЕрдкрдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рддрд░реНрдХ рдХреЛ рдкрдХреНрд╖ рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдФрд░ рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдПрдХ "рд╡рд┐рджреЗрд╢реА рдкрд░реНрдпрдЯрдХ," "рдЗрддрд┐рд╣рд╛рд╕рдХрд╛рд░," "рдЯреИрдХреНрд╕ рдХрд▓реЗрдХреНрдЯрд░," рдпрд╛ "рд╡рдХреАрд▓" рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВред

рдореИрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рддреБрд░рдВрдд рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд▓реЗрдХрд░ рдЖрдП рд╣реИрдВ: рдХрд┐рд╕ рднрд╛рд╖рд╛ рдФрд░ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдХрд┐рд╕ рдЕрд╡рдзрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдСрдкрд░реЗрд╢рди рдореЗрдВ рдХрд┐рд╕ рддрд░рд╣ рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: рдХрд╛рдиреВрдиреА рдпрд╛ рдкреЛрд╕реНрдЯрд▓? рдФрд░ рдПрдХ рд╢рд╣рд░: рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдирд╛рдорд┐рдд рдЗрд▓рд╛рдХреЗ, рдпрд╛ рдХреНрдпрд╛? рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рд╕рдбрд╝рдХ рдПрдХ рдмреБрд▓реЗрд╡рд╛рд░реНрдб, рд▓реЗрди, рдПрд╡реЗрдиреНрдпреВ рдпрд╛ рдХреБрдЫ рдФрд░ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрди рд╕рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдЖрдЗрдП рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред рдЧреВрдЧрд▓ рдЕрдм рд╕реБрдВрджрд░ рдкрд┐рдЪрд╛рдИ рджреНрд╡рд╛рд░рд╛ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╣ рднрд╛рд░рдд рд╕реЗ рд╣реИрдВред рдЙрдирдХрд╛ рдЬрдиреНрдо рдЪреЗрдиреНрдирдИ рд╢рд╣рд░ рдореЗрдВ рд╣реБрдЖ рдерд╛ред рдпрд╛ рдпрд╣ рдорджреНрд░рд╛рд╕ рд╣реИ? 1996 рдореЗрдВ, рдирд┐рд╡рд╛рд╕рд┐рдпреЛрдВ рдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рд╢рд╣рд░ рдХрд╛ рдирд╛рдо рдмрд╣реБрдд рдкреБрд░реНрддрдЧрд╛рд▓реА рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рддрдорд┐рд▓рдирд╛рдбреБ рдХреА рд░рд╛рдЬрдзрд╛рдиреА рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ рдорджреНрд░рд╛рд╕ рд╕реЗ рдЪреЗрдиреНрдирдИ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рддреЛ рдХреНрдпрд╛ рд╕реБрдВрджрд░ рдФрд░ рдЙрдирдХреЗ 72 рдорд┐рд▓рд┐рдпрди рд╣рдорд╡рддрди рдЕрдкрдиреЗ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдореЗрдВ рджрд░реНрдЬ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рд╕рдВрдкреВрд░реНрдг рд╡рд┐рдЬреНрдЮрд╛рди рд╣реИ рдЬреЛ рдЗрд╕рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддрд╛ рд╣реИ: рдЕрдиреБрдкреНрд░рдпреБрдХреНрдд рд╕рд╛рдордпрд┐рдХ ред
рддреЛ, рдХреБрдЫ рдлреЙрд▓реЛ-рдЕрдк рдкреНрд░рд╢реНрди рд╣реИрдВред рд╕рдордп рдФрд░ рджрд┐рдирд╛рдВрдХ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? рд╕реНрдкрд╖реНрдЯ, рдзрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдпрд╛ рднреМрдЧреЛрд▓рд┐рдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ? рдФрд░ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдФрд░ рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рдЕрдореВрд░реНрдд рдкрд░рдд рдХреЛ рдХрдо рдХрд┐рдП рдмрд┐рдирд╛ рдЕрдкрдиреА рдкрд╕рдВрдж рдХреЗ DBMS рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рдкрд╛рдПрдВрдЧреЗ? рдЖрдк рдиреАрдЪреЗ рдХреЗ рд╕рд░реНрдкрд┐рд▓ рдХреЛ рдкрд░рдорд╛рдгреБ рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╢реАрди рдбреЗрдЯрд╛ рдФрд░ рдЙрдирдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рд╡рд┐рдЪрд╛рд░реЛрдВ рд╕реЗ рдХреИрд╕реЗ рдмрдЪрддреЗ рд╣реИрдВ? рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдПрдХ рдЖрджрд┐рдо рдпрд╛, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЕрдЪреНрдЫреА рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рдПрдкреАрдЖрдИ рдХреЗ рд╕реНрд░реЛрдд рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд▓рд╛рдпрдХ рд╣реИред рдЕрдкрдиреЗ рдЕрд╡рдХрд╛рд╢ рдкрд░ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЛред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╕рдВрджрд░реНрдн рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪреАрдЬ рд╣реИред рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рд╣рдореЗрдВ "рдорд╢реАрди рдбреЗрдЯрд╛" рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдХреЗ рдФрд░ рд╕рдВрджрд░реНрдн-рдирд┐рд░реНрднрд░ "рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди" рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рдЗрд╕рдХрд╛ рдкреНрд░рддреНрдпрдХреНрд╖ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдЯреНрдпреВрдкрд▓реНрд╕ рдХреЛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ;-)

рдЗрд╕ рдмреАрдЪ, рд╣рдо "рдЖрджрд┐рдо" рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд▓реМрдЯ рдЖрдПрдВрдЧреЗ рдФрд░ рдЪреАрдЬреЛрдВ рдХреЛ рдЕрдкрдиреЗ рд▓рд┐рдП рдХрдард┐рди рдмрдирд╛ рд▓реЗрдВрдЧреЗред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╣рдо рдкрд╣рд▓реА рдмрд╛рд░ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдкрддреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдВрдЧреЗред рдЙрд╕реА рд╕рдордп, рд╣рдо рдпреВрдЖрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗ рдЬрдм рд╡реЗ рдЦреЗрддреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рджрд░реНрдЬ рдХрд░ рд░рд╣реЗ рд╣реЛрдВрдЧреЗред
рдЬрдм рдПрдХ рд╕реНрдерд╛рди рдкрд░ рджреЛ рдЪреАрдЬреЗрдВ рд╣реЛрддреА рд╣реИрдВ - рдЧреНрд░рдВрде рдФрд░ рдЗрдВрдЯрд░рд╕рд┐рд╕реНрдЯрдо рдЖрдИрдЖрд░рдЖрдИрдПрд╕ рдбреЗрдЯрд╛ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо - рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдкрд╛рд╕ рдорд╢реАрди рд╕реЗ рджреВрд░ рдЬрд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдЪреАрдЬреЛрдВ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрд╡рд╕рд░ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдореНрдмреЗрдбреЗрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдШрдЯрдХреЛрдВ iKnow рдФрд░ iFind рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред рдпреЗ рдШрдЯрдХ рдХреНрд░рдорд╢рдГ рдЕрд╕рдВрд░рдЪрд┐рдд рдбреЗрдЯрд╛ рдФрд░ рдкреВрд░реНрдг-рдкрд╛рда рдЦреЛрдЬ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВред
рдЖрдЗрдП OpenStreetMap рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╕реНрдХреАрдорд╛ рдХреЛ рдЦреЛрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдпрд╣ рдЙрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рд╕рдЯреАрдХ рдХрд╛рд░рдг рдирд╣реАрдВ рдкрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдУрдПрд╕рдПрдо рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдбреЗрдЯрд╛ рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИ ред рдФрд░ рдпрд╣ рд╣рдореЗрдВ рдмрд╣реБрдд рдорджрдж рдХрд░реЗрдЧрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджреЗрдЦрд╛ рдЬрд╛рдПрдЧрд╛! рдФрд░ рд╡рд╣ рдкрд╣рд┐рдпрд╛ рдХрд╛ рдлрд┐рд░ рд╕реЗ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдПрдХ рдЙрдкрдпреБрдХреНрдд рдПрдХреНрд╕рдПрд╕рдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬреЛ рдореИрдВрдиреЗ рдЖрдкрдХреЗ рд▓рд┐рдП рдкрд╛рдпрд╛ред рдФрд░ рдзрдиреНрдпрд╡рд╛рдж, рдУрд▓рд┐рд╡рд░ рд╢реНрд░реЗрдХред рдпрд╣рд╛рдБ рдФрд░ рддрд╕реНрд╡реАрд░реЗрдВ рд╣реИрдВ ред рдореБрдЭреЗ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЙрдкрдпреБрдХреНрдд рд╣реИ рдФрд░ XML рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ OSM рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрдпреЛрдВ рд╣реИ, рд▓реЗрдХрд┐рди XSD рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ "<? Xml ..." рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рддрддреНрд╡ OpenStreetMap рдХреЗ рднреМрддрд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рд╡реИрдЪрд╛рд░рд┐рдХ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рдШрдЯрдХ рд╣реИрдВред рд╡реЗ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ

  • рдиреЛрдбреНрд╕ - рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛,
  • рддрд░реАрдХреЗ - рд░реИрдЦрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдФрд░ рдХреНрд╖реЗрддреНрд░ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛, рдФрд░
  • рд╕рдВрдмрдВрдз - рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрднреА-рдХрднреА рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЕрдиреНрдп рддрддреНрд╡ рдПрдХ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдореЗрдВ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рд╕рдВрдмрджреНрдз рдЯреИрдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдЬреЛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рддрддреНрд╡ рдХреЗ рдЕрд░реНрде рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ)ред рдПрдХ рдЯреИрдЧ рдореЗрдВ рджреЛ рдЖрдЗрдЯрдо, рдПрдХ рдХреБрдВрдЬреА рдФрд░ рдПрдХ рдореВрд▓реНрдп рд╣реЛрддрд╛ рд╣реИред рдЯреИрдЧ рдорд╛рдирдЪрд┐рддреНрд░ рддрддреНрд╡реЛрдВ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ: рдиреЛрдбреНрд╕, рддрд░реАрдХреЗ рдпрд╛ рд╕рдВрдмрдВрдзред

рдЧрд▓рд┐рдпрд╛рдВ рдФрд░ рд╢рд╣рд░ рдХрд╣рд╛рдВ рд╣реИрдВ? рдпрд╣ рдПрдХ рдмрдбрд╝рд╛ рд░рд╣рд╕реНрдп рд╣реИ! рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрдврд╝рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛? рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЧрд▓реА рдмрд╛рд░ред :)

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо XSD рд╕реНрдХреАрдорд╛ рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдХрд┐ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЖрдИрдЖрд░рдЖрдИрдПрд╕ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдЙрдЪрд┐рдд рд╡рд░реНрдЧ% XML рдПрдбреЗрдкреНрдЯрд░ рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рдХреГрдкрд╛рдкреВрд░реНрд╡рдХ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╢реБрд░реБрдЖрдд рдореЗрдВ рдкреНрд░рддрд┐рд╢рдд рд╕рдВрдХреЗрдд рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдПрдХ рд╡рд░реНрдЧ рд╣реИред рдЗрд╕ рдкрд░ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ ред рд╣рдо рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рд╕рдВрдЪрд╛рд▓рди рдХрд░реЗрдВрдЧреЗред

 set xmlSchema = ##class(%XML.Utils.SchemaReader).%New() do xmlSchema.Process("/path/to/OSMSchema.xsd") 

рдЖрдк рдПрдЯреЗрд▓рд┐рдпрд░ рдЖрдИрдбреАрдИ (рдореЗрдиреВ рдореЗрдВ, рдЯреВрд▓> рдРрдб-рдЗрдиреНрд╕> рдПрдХреНрд╕рдПрдордПрд▓ рд╕реНрдХреАрдорд╛ рд╡рд┐рдЬрд╝рд╛рд░реНрдб) рд╕реЗ рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рдЫрд╡рд┐

рдЪреВрдВрдХрд┐ рд╣рдордиреЗ рдкрд░рд┐рдгрд╛рдореА рдкреИрдХреЗрдЬ рдХреЗ рдирд╛рдо рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдХреЗ рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдирд╣реАрдВ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рдЯреЗрд╕реНрдЯ рдкреИрдХреЗрдЬ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдПред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреВрд╕рд░реА рдХрдорд╛рдВрдб рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ рд╕реНрдХреАрдорд╛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рдкрд╛рдпрдерди рд╕рд░реНрд╡рд░ рдореЗрдВ рднреЗрдЬ рджрд┐рдпрд╛ рд╣реИ:

 python3 -m http.server 80 

рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп http-рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╛ рдЕрдкрдиреЗ рдЖрдИрдЖрд░рдЖрдИрдПрд╕ рд╕рд░реНрд╡рд░ рдкрд░ рдлрд╝рд╛рдЗрд▓ рд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВред

рдирддреАрдЬрддрди, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрда рд╡рд░реНрдЧ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдкрддреЗ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВ рдПрдХреНрд╕рдПрдордПрд▓ред рдпрд╣ рдореБрдЦреНрдп рд╡рд░реНрдЧ OSM.osm рд╣реИ:

 Class OSM.osm Extends (%Persistent, %XML.Adaptor) [ ProcedureBlock ] { Parameter XMLNAME = "osm"; Parameter XMLSEQUENCE = 1; Property bounds As OSM.bounds(XMLNAME = "bounds", XMLREF = 1) [ Required ]; Relationship node As OSM.node(XMLNAME = "node", XMLPROJECTION = "ELEMENT", XMLREF = 1) [ Cardinality = many, Inverse = osm ]; Relationship way As OSM.way(XMLNAME = "way", XMLPROJECTION = "ELEMENT", XMLREF = 1) [ Cardinality = many, Inverse = osm1 ]; Relationship relation As OSM.relation(XMLNAME = "relation", XMLPROJECTION = "ELEMENT", XMLREF = 1) [ Cardinality = many, Inverse = osm2 ]; Property version As %xsd.float(XMLNAME = "version", XMLPROJECTION = "ATTRIBUTE") [ InitialExpression = ".6", ReadOnly ]; Property generator As %String(MAXLEN = "", XMLNAME = "generator", XMLPROJECTION = "ATTRIBUTE") [ InitialExpression = "CGImap 0.0.2", ReadOnly ]; } 

рдФрд░ OSM.node:

 Class OSM.node Extends (%Persistent, %XML.Adaptor) [ ProcedureBlock ] { Parameter XMLNAME = "node"; Parameter XMLSEQUENCE = 1; Relationship tag As OSM.tag(XMLNAME = "tag", XMLPROJECTION = "ELEMENT", XMLREF = 1) [ Cardinality = many, Inverse = node ]; Property id As %xsd.unsignedLong(XMLNAME = "id", XMLPROJECTION = "ATTRIBUTE"); Property lat As %xsd.double(XMLNAME = "lat", XMLPROJECTION = "ATTRIBUTE"); Property lon As %xsd.double(XMLNAME = "lon", XMLPROJECTION = "ATTRIBUTE"); Property user As %String(MAXLEN = "", XMLNAME = "user", XMLPROJECTION = "ATTRIBUTE") [ SqlFieldName = _user ]; Property uid As %xsd.unsignedLong(XMLNAME = "uid", XMLPROJECTION = "ATTRIBUTE"); Property visible As %Boolean(XMLNAME = "visible", XMLPROJECTION = "ATTRIBUTE"); Property version As %xsd.unsignedLong(XMLNAME = "version", XMLPROJECTION = "ATTRIBUTE"); Property changeset As %xsd.unsignedLong(XMLNAME = "changeset", XMLPROJECTION = "ATTRIBUTE"); Property timestamp As %TimeStamp(XMLNAME = "timestamp", XMLPROJECTION = "ATTRIBUTE"); Relationship osm As OSM.osm(XMLPROJECTION = "NONE") [ Cardinality = one, Inverse = node ]; } 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреБрдЫ рд╡рд┐рдХрд▓реНрдк рдЬреЛ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рд╣рдорд╛рд░реЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдП рд╣реИрдВред

рдХреЗрд╡рд▓ рд░реВрд╕ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдХрд╛рд░ рдПрдХреНрд╕рдПрдордПрд▓ рд▓рдЧрднрдЧ 53 рдЬреАрдмреА рд╣реИред рдЖрдк рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдЯреЗрдХреНрд╕реНрдЯ-рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЯреВрд▓ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ: рд╡реЗ рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкреЗрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЖрдк рд╡реНрдпрд╛рдпрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдЯреЗ рдирдореВрдиреЗ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд░реВрд╕ рдХреЗ рдкрддреЗ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рд╕рдВрдХреБрдЪрд┐рдд рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдХреИрд▓рд┐рдирд┐рдирдЧреНрд░рд╛рдж рдХреНрд╖реЗрддреНрд░ рдХреА рдЫреЛрдЯреА рдорд╛рддреНрд░рд╛ 18 рдПрдордмреА рд╣реЛрдЧреА, рдЕрд╕рдореНрдкреАрдбрд┐рдд рдПрдХреНрд╕рдПрдордПрд▓ рдлрд╝рд╛рдЗрд▓ 203 рдПрдордмреА рд╣реИред
рд╡реИрд╕реЗ, InterSystems IRIS рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╢рд╛рдмреНрджрд┐рдХ рдХреА рдЕрдзрд┐рдХрддрдо рд▓рдВрдмрд╛рдИ 3,641,144 рд╡рд░реНрдг рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдлрд╝рд╛рдЗрд▓ рдпрд╛ URL рдХреЛ рд╕реАрдзреЗ рдЗрд╕рдореЗрдВ рд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛ред рдЖрдк рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдЕрдиреНрдп рд╕реАрдорд╛рдПрдБ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЙрди рдбреЗрдЯрд╛ рдзрд╛рд░рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд▓рдВрдмрд╛рдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИред
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдореЗрдВ рдиреЛрдб рдХреЗ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдорд┐рд▓рддрд╛ рд╣реИред

рдЕрдЧрд▓рд╛, рд╣рдо рдкреБрд╕реНрддрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рд╣рдо рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВрдЧреЗ рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА% XML.Reader рд╕реЗ рдПрдХ рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ XML рдХреЛ рдореВрд▓ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдордЭрддрд╛ рд╣реИ:

 set reader = ##class(%XML.Reader).%New() 

рд╣рдо рдЗрд╕реЗ рдирд┐рд░реНрджреЗрд╢ рджреЗрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рд▓реЗрдирд╛ рд╣реИ, рдФрд░ рдмрд╛рдХреА рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рд╣реИред рд╣рдо рдПрдХ рдПрдХрд▓ рд╡рд░реНрдЧ рд▓реЗрдВрдЧреЗ:

 do reader.Correlate("node","OSM.node") 

рдЙрд╕рдХреЗ рдмрд╛рдж, рдореВрд▓ рдПрдордмреАрдбреА рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЗ рд╣реИрдВред рдпрджрд┐ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЖрдИрдЖрд░рдЖрдИрдПрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕реНрдЯреЛрд░реЗрдЬ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╛, рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЗрд╕реЗ HTTP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреЗрдЬрдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВред рдПрдХ рдЕрдзрд┐рдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╡рд┐рдХрд▓реНрдк рднреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рдиреАрдЪреЗ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред

 set url="http://localhost/kaliningrad-latest.osm" write reader.OpenUrl(url) 

рдорд╣рддреНрд╡рдкреВрд░реНрдг! рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдЬреНрдпрд╛рджрд╛рддрд░ рд▓реЛрдЧ рдЬреЛ рдЦреБрдж рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рдХреБрдЫ рднрдпрд╛рд╡рд╣рддрд╛ рд╕реЗ рд╕рд╛рдордирд╛ рдХрд░реЗрдВрдЧреЗред рдПрдХ рдЦреБрд╢ "1" (рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ) рдХреЗ рдмрдЬрд╛рдп, рд╕рд┐рд╕реНрдЯрдо "0, рд╕реНрдЯреЛрд░ ..." рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХреБрдЫ рдХреЛ рд▓реМрдЯрд╛рдПрдЧрд╛ рдФрд░ рдпрд╣ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реЛрдЧрд╛ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЬреЛ рдлрд╛рдЗрд▓ mBD рд▓рдЧрддреА рд╣реИ, рд╡рд╣ рдЗрддрдиреА рд╕реВрдХреНрд╖реНрдо рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╣рдорд╛рд░реА рд╡рд╕реНрддреБ рдкрд░ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрдЧреАред рдЗрд╕рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдирд╣реАрдВ рдХреА рдЧрдИ рдереАред рдХреНрдпрд╛ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗред рдЖрдИрдЖрд░рдЖрдИрдПрд╕ рдбреЗрдЯрд╛ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЖрдкрдХреЛ рд░реИрдо рдореЗрдВ 4 рдЯреАрдмреА рддрдХ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рддреЛ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реБрдЖ? рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕рд┐рд╕реНрдЯрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЖрдХрд╛рд░ 256 рдПрдордмреА рд╣реИред рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЗрд╕рд╕реЗ рдХрд╣реАрдВ рдЬреНрдпрд╛рджрд╛ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдФрд░ рдпрд╛рдж рд░рдЦреЗрдВ, рдпреЗ рд░реИрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╣реИрдВред рдХреНрдпрд╛ рдЖрдкрдХреЗ рдХрдВрдкреНрдпреВрдЯрд░ / рд╕рд░реНрд╡рд░ рдкрд░ рдкрд░реНрдпрд╛рдкреНрдд рдЬрдЧрд╣ рд╣реИ?
рдореИрдВрдиреЗ рдЗрд╕ рд╡рд┐рд╢рд╛рд▓рдХрд╛рдп рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдореГрддрд┐ рдХреА рдорд╛рддреНрд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛: рд▓рдЧрднрдЧ 170 рдЬреАрдмреАред рдЗрд╕реЗ рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдореЗрдиреВ> рдореЗрдореЛрд░реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ> рдЕрдзрд┐рдХрддрдо рдореЗрдореЛрд░реА рдХреНрд╖рдорддрд╛ рдкреНрд░рддрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ (KB)) рдпрд╛ рд╕рд┐рд╕реНрдЯрдо рдЪрд░ $ ZSTORAGE (рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рдореЗрдВ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ:

 set $ZSTORAGE=170000000 

рдХреНрдпрд╛ рдЖрдкрдиреЗ рд╕рд╣реА рдореЗрдореЛрд░реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдирдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЪрд▓рд╛рдИ рдереА? рдлрд┐рд░ рдЕрдЧрд▓рд╛ рднрд╛рдЧ рдЖрд╕рд╛рди рд╣реИ: рд╣рдо рд╕рд┐рд░реНрдл рдкрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рдмрдЪрд╛рддреЗ рд╣реИрдВред

рдПрдХ рд╡рд┐рдХрд▓реНрдк (рдФрд░ рд╢рд╛рдпрдж рдмреЗрд╣рддрд░) рд╡рд┐рдХрд▓реНрдк рднреА рд╣реИ:% XML рдХреА UsePPG рд╣реИрдВрдбрд▓рд░ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ред рд░реАрдбрд░ рдХреНрд▓рд╛рд╕, рдЬреЛ рдЖрдкрдХреЛ XML рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд╕реНрдЯреЛрд░ рдирд╣реАрдВ рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИ рдФрд░ рдорд╛рдирдХ рдореЗрдореЛрд░реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

 set reader = ##class(%XML.Reader).%New() set reader.UsePPGHandler = 1 

рдЕрдЧрд▓рд╛ ... рд╕рд╣рд╕рдВрдмрдВрдзреА / рдкрдврд╝реЗрдВ, рдЖрджрд┐ред ...

 do reader.Next(.object) do object.%Save() 

рдФрд░ рдЗрддрдиреЗ рдкрд░, рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП 1,180,849 рдмрд╛рд░ :-) рдпрд╣ рдердХрд╛рдК рд╣реИред рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕рдорд╛рди рдЖрджреЗрд╢реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ OSM.map рд╡рд░реНрдЧ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВрдЧреЗ:

 ClassMethod Import(url) { Set reader = ##class(%XML.Reader).%New() Set reader.UsePPGHandler = 1 Set status = reader.OpenURL(url) Do reader.Correlate("node","OSM.node") While (reader.Next(.object)) { Do object.%Save() } //back to top of XML file Do reader.Rewind() Do reader.Correlate("way","OSM.way") While (reader.Next(.object)) { Do object.%Save() } Do reader.Rewind() Do reader.Correlate("relation","OSM.relation") While (reader.Next(.object)) { Do object.%Save() } } 

рд╣рдо рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рд╕рд┐рд░реНрдл рдПрдХ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рдПрдХреНрд╕реЛрдХрд╛рд░реНрдЯреЗрдХреНрд╕ рдХреА рд╢рдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:

 do ##class(OSM.osm).Import("http://localhost/kaliningrad-latest.osm") 

рдФрд░ рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рдЦреБрд▓реЗ рд╕реЗ рдкрддрд╛ рдбреЗрдЯрд╛ рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░ рд╢рд╛рдпрдж рдмрд╣реБрдд рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕реНрд░реЛрдд рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕рдорд╛рди рдЪрд░рдгреЛрдВ рд╕реЗ рдЧреБрдЬрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ, рд▓реЗрдХрд┐рди рдЙрди рдЖрдВрдХрдбрд╝реЛрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдпрд╣ рднреА рдорд╛рдирдХреАрдХреГрдд, рд╕рд╛рдл-рд╕реБрдерд░рд╛, рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд, рдФрд░ рд╕рд╣реА рд╕рд░рдХрд╛рд░реА рдирд┐рдХрд╛рдп рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдпрд╣ рдХрд┐рдВрд╡рджрдВрддрд┐рдпреЛрдВ рдХреА рдмрд╛рдд рд╣реИред рдЕрдкрдиреЗ рдХреНрд░реЗрдбрд┐рдЯ рдХреЗ рд▓рд┐рдП, рд░реВрд╕реА рдХрд░ рд╕реЗрд╡рд╛ рдЕрдкрдиреЗ рдбрд┐рдЬрд┐рдЯрд▓ рдЙрддреНрдкрд╛рдж рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИред рдЗрд╕ рд╣рдж рддрдХ рдХрд┐ рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рд╕рдВрднрд╡ рд╣реИред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреА рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ, рдФрд░ рдбреЗрдЯрд╛ рдХреНрд▓реАрди-рдЕрдк рдЬрд╛рд░реА рд╣реИред рд╣рдо рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд░рдХрд╛рд░ рдХреЗ рдиреЗрддрд╛рдУрдВ рдХреЛ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡реЗ рдЕрдкрдиреЗ рд▓рд┐рдП рдирд┐рд░реНрдгрдп рд▓реЗ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рд╣рдо рд╕рднреА рдХреЛ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рдХрд░реЗрдВред

рдФрд░ рдЕрдм рдЪрд▓реЛ рдЕрдзрд┐рдХ рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ - рд╣рдо рдЕрдкрдиреЗ рд╕реНрд░реЛрдд рд╕реЗ рд╕рд╣реА рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрддрд╛ рд╕рд┐рдЦрд╛рдПрдВрдЧреЗред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд╕рдВрдШреАрдп рдХрд░ рд╕реЗрд╡рд╛ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдореЗрдВ XML рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╡рд┐рд╡рд░рдг рд╣реИрдВред рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рд╡рд╛рд▓реА FIAS рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдореЗрдВ ADDROBJ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЬреЛ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, AS_ADDROBJ_2_250_01_04_01_01.xsd рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ

рдЕрдЧрд▓рд╛, рдЪрд▓реЛ XSD рд╕реНрдХреАрдорд╛ рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рд╣рдо рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рд╕рдВрдЪрд╛рд▓рди рдХрд░реЗрдВрдЧреЗ:

 set xmlScheme = ##class(%XML.Utils.SchemaReader).%New() do xmlScheme.Process("/path/to/AS_ADDROBJ_2_250_01_04_01_01.xsd") 

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рд╡рд░реНрдЧ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдкрддреЗ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВ XML:

Test.AddressObjects

 /// Composition and structure of the file with classifier information for FIAS DB elements in address form Class Test.AddressObjects Extends (%Persistent, %XML.Adaptor) [ ProcedureBlock ] { Parameter XMLNAME = "AddressObjects"; Parameter XMLSEQUENCE = 1; /// Classifier for elements in address form Relationship Object As Test.Object(XMLNAME = "Object", XMLPROJECTION = "ELEMENT") [ Cardinality = many, Inverse = AddressObjects ]; } 

Test.Object

 /// Created from: http://localhost:28869/AS_ADDROBJ_2_250_01_04_01_01.xsd Class Test.Object Extends (%Persistent, %XML.Adaptor) [ ProcedureBlock ] { Parameter XMLNAME = "Object"; Parameter XMLSEQUENCE = 1; /// Global unique identifier of the address object Property AOGUID As %String(MAXLEN = 36, MINLEN = 36, XMLNAME = "AOGUID", XMLPROJECTION = "ATTRIBUTE") [ Required ]; /// Formal name Property FORMALNAME As %String(MAXLEN = 120, MINLEN = 1, XMLNAME = "FORMALNAME", XMLPROJECTION = "ATTRIBUTE") [ Required ]; /// Region code Property REGIONCODE As %String(MAXLEN = 2, MINLEN = 2, XMLNAME = "REGIONCODE", XMLPROJECTION = "ATTRIBUTE") [ Required ]; /// Autonomy code Property AUTOCODE As %String(MAXLEN = 1, MINLEN = 1, XMLNAME = "AUTOCODE", XMLPROJECTION = "ATTRIBUTE") [ Required ]; /// Area code Property AREACODE As %String(MAXLEN = 3, MINLEN = 3, XMLNAME = "AREACODE", XMLPROJECTION = "ATTRIBUTE") [ Required ]; /// City code Property CITYCODE As %String(MAXLEN = 3, MINLEN = 3, XMLNAME = "CITYCODE", XMLPROJECTION = "ATTRIBUTE") [ Required ]; /// Code of area within city Property CTARCODE As %String(MAXLEN = 3, MINLEN = 3, XMLNAME = "CTARCODE", XMLPROJECTION = "ATTRIBUTE") [ Required ]; /// Locality code Property PLACECODE As %String(MAXLEN = 3, MINLEN = 3, XMLNAME = "PLACECODE", XMLPROJECTION = "ATTRIBUTE") [ Required ]; /// Planning structure element code Property PLANCODE As %String(MAXLEN = 4, MINLEN = 4, XMLNAME = "PLANCODE", XMLPROJECTION = "ATTRIBUTE") [ Required ]; /// Street code Property STREETCODE As %String(MAXLEN = 4, MINLEN = 4, XMLNAME = "STREETCODE", XMLPROJECTION = "ATTRIBUTE"); /// Code of additional element in address form Property EXTRCODE As %String(MAXLEN = 4, MINLEN = 4, XMLNAME = "EXTRCODE", XMLPROJECTION = "ATTRIBUTE") [ Required ]; /// Code of subordinate additional element in address form Property SEXTCODE As %String(MAXLEN = 3, MINLEN = 3, XMLNAME = "SEXTCODE", XMLPROJECTION = "ATTRIBUTE") [ Required ]; /// Official name Property OFFNAME As %String(MAXLEN = 120, MINLEN = 1, XMLNAME = "OFFNAME", XMLPROJECTION = "ATTRIBUTE"); /// Postal code Property POSTALCODE As %String(MAXLEN = 6, MINLEN = 6, XMLNAME = "POSTALCODE", XMLPROJECTION = "ATTRIBUTE"); /// Federal Tax Service - Private Individual code Property IFNSFL As %String(MAXLEN = 4, MINLEN = 4, XMLNAME = "IFNSFL", XMLPROJECTION = "ATTRIBUTE"); /// Federal Tax Service - Private Individual territorial district code Property TERRIFNSFL As %String(MAXLEN = 4, MINLEN = 4, XMLNAME = "TERRIFNSFL", XMLPROJECTION = "ATTRIBUTE"); /// Federal Tax Service - Legal Entity code Property IFNSUL As %String(MAXLEN = 4, MINLEN = 4, XMLNAME = "IFNSUL", XMLPROJECTION = "ATTRIBUTE"); /// Federal Tax Service - Legal Entity territorial district code Property TERRIFNSUL As %String(MAXLEN = 4, MINLEN = 4, XMLNAME = "TERRIFNSUL", XMLPROJECTION = "ATTRIBUTE"); /// Russian Classification on Objects of Administrative Division Property OKATO As %String(MAXLEN = 11, MINLEN = 11, XMLNAME = "OKATO", XMLPROJECTION = "ATTRIBUTE"); /// Russian Classification of Territories of Municipal Formations Property OKTMO As %String(MAXLEN = 11, MINLEN = 8, XMLNAME = "OKTMO", XMLPROJECTION = "ATTRIBUTE"); /// Date of record entry Property UPDATEDATE As %Date(XMLNAME = "UPDATEDATE", XMLPROJECTION = "ATTRIBUTE") [ Required ]; /// Short name of object type Property SHORTNAME As %String(MAXLEN = 10, MINLEN = 1, XMLNAME = "SHORTNAME", XMLPROJECTION = "ATTRIBUTE") [ Required ]; /// Address object level Property AOLEVEL As %Integer(XMLNAME = "AOLEVEL", XMLPROJECTION = "ATTRIBUTE", XMLTotalDigits = 10) [ Required ]; /// Object identifier of the parent object Property PARENTGUID As %String(MAXLEN = 36, MINLEN = 36, XMLNAME = "PARENTGUID", XMLPROJECTION = "ATTRIBUTE"); /// Unique record identifier. Key field. Property AOID As %String(MAXLEN = 36, MINLEN = 36, XMLNAME = "AOID", XMLPROJECTION = "ATTRIBUTE") [ Required ]; /// Record identifier associated with previous historical record Property PREVID As %String(MAXLEN = 36, MINLEN = 36, XMLNAME = "PREVID", XMLPROJECTION = "ATTRIBUTE"); /// Record identifier associated with next historical record Property NEXTID As %String(MAXLEN = 36, MINLEN = 36, XMLNAME = "NEXTID", XMLPROJECTION = "ATTRIBUTE"); /// Address object code in one string with validity indicator from Russian Classifier of Addresses (KLADR) 4.0. Property CODE As %String(MAXLEN = 17, MINLEN = 0, XMLNAME = "CODE", XMLPROJECTION = "ATTRIBUTE"); /// Address object code from KLADR 4.0 in one string without validity indicator (last two digits) Property PLAINCODE As %String(MAXLEN = 15, MINLEN = 0, XMLNAME = "PLAINCODE", XMLPROJECTION = "ATTRIBUTE"); /// Validity status of FIAS address object. Current address as of today's date. Usually the last entry about the address object. /// 0 - Not current /// 1 - Current Property ACTSTATUS As %Integer(XMLNAME = "ACTSTATUS", XMLPROJECTION = "ATTRIBUTE", XMLTotalDigits = 10) [ Required ]; /// Center status Property CENTSTATUS As %Integer(XMLNAME = "CENTSTATUS", XMLPROJECTION = "ATTRIBUTE", XMLTotalDigits = 10) [ Required ]; /// Operation status on record - reason for record's appearance (see description of OperationStatus table): /// 01 тАУ Activation; /// 10 тАУ Addition; /// 20 тАУ Change; /// 21 тАУ Group change; /// 30 тАУ Deletion; /// 31 - Deletion due to the deletion of the parent object; /// 40 тАУ Attachment of the address object (merger); /// 41 тАУ Reassignment due to the merger of the parent object; /// 42 - Termination due to the attachment to another address object; /// 43 - Creation of a new address object due to a merger of address objects; /// 50 тАУ Reassignment; /// 51 тАУ Reassignment due to the reassignment of the parent object; /// 60 тАУ Termination due to segmentation; /// 61 тАУ Creation of a new address object due to segmentation Property OPERSTATUS As %Integer(XMLNAME = "OPERSTATUS", XMLPROJECTION = "ATTRIBUTE", XMLTotalDigits = 10) [ Required ]; /// KLADR 4 validity status (last two digits in the code) Property CURRSTATUS As %Integer(XMLNAME = "CURRSTATUS", XMLPROJECTION = "ATTRIBUTE", XMLTotalDigits = 10) [ Required ]; /// Start of record operation Property STARTDATE As %Date(XMLNAME = "STARTDATE", XMLPROJECTION = "ATTRIBUTE") [ Required ]; /// End of record operation Property ENDDATE As %Date(XMLNAME = "ENDDATE", XMLPROJECTION = "ATTRIBUTE") [ Required ]; /// Foreign key to requirements document Property NORMDOC As %String(MAXLEN = 36, MINLEN = 36, XMLNAME = "NORMDOC", XMLPROJECTION = "ATTRIBUTE"); /// Current address object indicator Property LIVESTATUS As %xsd.byte(VALUELIST = ",0,1", XMLNAME = "LIVESTATUS", XMLPROJECTION = "ATTRIBUTE") [ Required ]; /// Address type: /// 0 - not defined /// 1 - municipal; /// 2 - administrative/territorial Property DIVTYPE As %xsd.int(VALUELIST = ",0,1,2", XMLNAME = "DIVTYPE", XMLPROJECTION = "ATTRIBUTE") [ Required ]; Relationship AddressObjects As Test.AddressObjects(XMLPROJECTION = "NONE") [ Cardinality = one, Inverse = Object ]; } 

FIAS рдореЗрдВ XML рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдкреВрд░реА рд╕реВрдЪреА рдореЗрдВ рд╕реЗ, рд╣рдо рдХреЗрд╡рд▓ рдХреНрд╖реЗрддреНрд░реЛрдВ, рд╢рд╣рд░реЛрдВ рдФрд░ рд╕рдбрд╝рдХреЛрдВ рдХреЗ рдирд╛рдо рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЬрдм рдореИрдВ рдкреНрд░рдХрд╛рд╢рди рдХреА рддреИрдпрд╛рд░реА рдХрд░ рд░рд╣рд╛ рдерд╛, рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рдерд╛:

 AS_ADDROBJ_20190106_90809714-fe22-45b2-929c-52bd950963e0.XML 


рдЪрд▓реЛ рдХреБрдЫ FIAS рднрд░рд╡рд╛рдВ рдХрд╛рд▓реА рдорд┐рд░реНрдЪ рдкрдХрд╛рдирд╛ред рдпрд╣ рдЖрдЧреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рд╛рдирджрд╛рд░ рднрд╡рд┐рд╖реНрдп рдХреА рддреИрдпрд╛рд░реА рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдиреНрдпреВрдирддрдо рд╕реЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред рдпреЗ рдПрдХрдорд╛рддреНрд░ рдРрд╕реА рд╕рд╛рдордЧреНрд░рд┐рдпрд╛рдВ рд╣реИрдВ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:

 Class FIAS.AddressObject Extends (%Persistent, %XML.Adaptor) [ ProcedureBlock ] { Parameter XMLNAME = "Object"; Parameter XMLSEQUENCE = 1; /// Global unique identifier of the address object Property AOGUID As %String(MAXLEN = 36, MINLEN = 36, XMLNAME = "AOGUID", XMLPROJECTION = "ATTRIBUTE") [ Required ]; /// Official name Property OFFNAME As %String(MAXLEN = 120, MINLEN = 1, XMLNAME = "OFFNAME", XMLPROJECTION = "ATTRIBUTE"); /// Postal code Property POSTALCODE As %String(MAXLEN = 6, MINLEN = 6, XMLNAME = "POSTALCODE", XMLPROJECTION = "ATTRIBUTE"); /// Short name of object type Property SHORTNAME As %String(MAXLEN = 10, MINLEN = 1, XMLNAME = "SHORTNAME", XMLPROJECTION = "ATTRIBUTE") [ Required ]; /// Address object level Property AOLEVEL As %Integer(XMLNAME = "AOLEVEL", XMLPROJECTION = "ATTRIBUTE", XMLTotalDigits = 10) [ Required ]; /// Object identifier of the parent object Property PARENTGUID As %String(MAXLEN = 36, MINLEN = 36, XMLNAME = "PARENTGUID", XMLPROJECTION = "ATTRIBUTE"); /// Unique record identifier. Key field. Property AOID As %String(MAXLEN = 36, MINLEN = 36, XMLNAME = "AOID", XMLPROJECTION = "ATTRIBUTE") [ Required ]; } 

рд╣рдо рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВрдЧреЗ рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА% XML.Reader рд╕реЗ рдПрдХ рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ XML рдХреЛ рдореВрд▓ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдордЭрддрд╛ рд╣реИ:

 set reader = ##class(%XML.Reader).%New() 

рд╣рдо рдЗрд╕реЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢ рджреЗрдВрдЧреЗ рдХрд┐ рдХрд┐рд╕реЗ рд▓реЗрдирд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдмрд╛рдХреА рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВред рд╣рдо рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХрд▓ рд╕реЗрд╡рд╛ рд▓реЗрдВрдЧреЗред

рдЕрдЧрд▓рд╛ ... рд╕рд╣рд╕рдВрдмрдВрдзреА / рдкрдврд╝реЗрдВ, рдЖрджрд┐ред ...

 do reader.Correlate("Object","FIAS.AddressObject") set url="http://localhost/AS_ADDROBJ_20190106_90809714-fe22-45b2-929c-52bd950963e0.XML" write reader.OpenUrl(url) 

рдлрд┐рд░ рдЕрдЧрд▓рд╛ рднрд╛рдЧ рдЖрд╕рд╛рди рд╣реИ: рд╣рдо рд╕рд┐рд░реНрдл рдкрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рдмрдЪрд╛рддреЗ рд╣реИрдВред

 do reader.Next(.object) do object.%Save() 

рдФрд░ рдЗрддрдиреЗ рдкрд░, рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП 3,722,548 рдмрд╛рд░ :-)

рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рднреА рдЬреНрдпрд╛рджрд╛ рдердХрд╛ рджреЗрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред рдЗрд╕реАрд▓рд┐рдП рд╣рдо рдЕрдкрдиреЗ FIAS.AddressObject рдХреЛ рдЙрд╕реА рдХрдорд╛рдВрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реНрд░реЗрдгреА рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВрдЧреЗ:

 ClassMethod Import() { // Create object to read XML Set reader = ##class(%XML.Reader).%New() // Get source XML for parsing Set status = reader.OpenURL("http://localhost/AS_ADDROBJ_20190106_90809714-fe22-45b2-929c-52bd950963e0.XML") If $$$ISERR(status) {Do $System.Status.DisplayError(status)} // Join object with the right sample structure Do reader.Correlate("Object","FIAS.AddressObject") // Read and save the object in storage While (reader.Next(.object,.status)) { Set status = object.%Save() If $$$ISERR(status) {do $System.Status.DisplayError(status)} } // If an error occurs during parsing, display a message If $$$ISERR(status) {Do $System.Status.DisplayError(status) } 

рд╣рдо рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рд╕рд┐рд░реНрдл рдПрдХ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рдПрдХреНрд╕реЛрдХрд╛рд░реНрдЯреЗрдХреНрд╕ рдХреА рд╢рдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:

 do ##class(FIAS.AddressObject).Import() 

рдЫрд╡рд┐

рдбрд┐рдирд░ рддреИрдпрд╛рд░ рд╣реИ, рд╕рдм рд▓реЛрдЧред рдпрд╣ mBD рдерд╛, рдФрд░ рдЕрдм рдпрд╣ рдПрдХ рддреИрдпрд╛рд░ рдкрдХрд╡рд╛рди рд╣реИ, рд░реВрд╕реА рд╢рд╣рд░реЛрдВ рдХреЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХред

рдЫрд╡рд┐

рдФрд░, рдЕрдВрдд рдореЗрдВ, 4TB рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрджред рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рдо рдзрд╛рд░рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ ред рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╕рдм рдХреБрдЫ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдк рдмрд╛рдЗрдирд░реА рдпрд╛ рд╡рд░реНрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдореЗрдВ рднрдВрдбрд╛рд░рдг рднреА рд╕рдВрднрд╡ рд╣реИред рдпрд╣рд╛рдВ рдиреБрд╕реНрдЦрд╛ рд╣реИ: рдзрд╛рд░рд╛ рд▓реЗ рд▓реЛ, рдЗрд╕реЗ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рдХрд╛рдЯ рд▓реЗрдВ, рдФрд░ рдЗрд╕реЗ рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдореЗрдВ рдЙрдкрднреЛрдЧ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рд╕реБрдВрджрд░ рдкрддреЗ рд╡рд╛рд▓реЗ рдСрдмреНрдЬреЗрдХреНрдЯрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдФрд░ рдкрд╛рдпрдерди рдПрдкреАрдЖрдИ рдкрд░ рдпрд╣рд╛рдВ рдкрд░реНрдпрд╛рдкреНрдд рдЬрдЧрд╣ рдирд╣реАрдВ рдереАред рд╡рд╣ рдПрдХ рдФрд░ рдХрд╣рд╛рдиреА рд╣реЛрдЧреАред
рдЕрдЪреНрдЫреА рдЦрдмрд░: рдЧрд╛рд░реНрдЯрдирд░ рдиреЗ рдбреАрдмреАрдПрдордПрд╕ рдХреА рд╢реНрд░реЗрдгреА рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░реЗрдЯрд┐рдВрдЧ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЕрдкрдирд╛ рд╡рд╛рд░реНрд╖рд┐рдХ рд╕рдВрдЧреНрд░рд╣ рдЕрднреА рдкреВрд░рд╛ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ 2019 рдХреЗ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдбреАрдмреАрдПрдордПрд╕ рдХреА рдЕрдкрдиреА рд░реИрдВрдХрд┐рдВрдЧ рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рд╣реИред рдЗрдВрдЯрд░рд╕рд┐рд╕реНрдЯрдореНрд╕ рдХреИрдЪ рдФрд░ рдЗрдВрдЯрд░рд╕рд┐рд╕реНрдЯрдо рдЖрдИрдЖрд░рдЖрдИрдПрд╕ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЛ "рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдЪреНрдЪрддрдо рд░реЗрдЯрд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рд╣реБрдИ рд╣реИ" 'рд╡рд┐рдХрд▓реНрдкред " рдЖрдк рдпрд╣ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рди рдЙрддреНрдкрд╛рджреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рд░реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЧреНрд░рд╛рд╣рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдореАрдХреНрд╖рд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ 2019 рдХрд╛ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдСрдкрд░реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдореИрдиреЗрдЬрдореЗрдВрдЯ рд╕рд┐рд╕реНрдЯрдо рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ред

рдЫрд╡рд┐

Source: https://habr.com/ru/post/hi446376/


All Articles