рдПрдХ рдмрд╛рд░ рдореБрдЭреЗ рдорд┐рдиреНрд╕реНрдХ рдХреА рд╕рдбрд╝рдХ рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдШрд░реЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдореЗрд░реА рдирд┐рд░рд╛рд╢рд╛ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдЬрдм рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХрд╣реАрдВ рднреА рдкреВрд░рд╛ рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЕрдЧрд░ рдирдИ рд╕рдбрд╝рдХреЗрдВ рдФрд░ рдШрд░ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ
OpenStreetMap рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рдФрд░ рдирд┐рд░рдВрддрд░ рдЕрджреНрдпрддрди рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рдерд╛ред рдкрд░реЗрд╢рд╛рдиреА рдпрд╣ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдб рдПрдХ xml рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ 2 рдЬреАрдмреА рдХреА рдорд╛рддреНрд░рд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдШрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЗрд╕ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХреА рдЬрд╛рддреА рд╣реИ:
<way id="25324320" > <nd ref="275904968"/> <nd ref="275904882"/> <nd ref="275904881"/> <nd ref="275904969"/> <nd ref="275904968"/> <tag k="addr:housenumber" v="17"/> <tag k="addr:postcode" v="220013"/> <tag k="addr:street" v=" "/> <tag k="building" v="yes"/> </way>
1.5 рдЬреАрдмреА рдбреЗрдЯрд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдЬрдм рдбреЗрдЯрд╛ рдХрд╛ рдЖрджреЗрд╢ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рддрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдбреЗрдЯрд╛ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдпрд╣ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ - рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдХ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ: рдЧреНрд░рд╣рдг (рдЬрд╛рд╡рд╛ рдПрд╕рдИ) рдФрд░ рдПрдХ рд╕рдЬреНрдЬрди рдХреЗ рдЗрдирдХрд╛рд░ рдХрд╛ рд╕реЗрдЯред
рдореМрди рд╕рд┐рджреНрдзрд╛рдВрдд
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛, рдлрд╝рд╛рдЗрд▓ рдПрдХ xml рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреЙрдЗрдВрдЯ (
рдиреЛрдб ), рд▓рд╛рдЗрди (
рд░рд╛рд╕реНрддрд╛ ) рдФрд░ рд╕рдВрдмрдВрдз (
рд╕рдВрдмрдВрдз ) рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЧреБрдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЙрдирдХреЗ рдЧреБрдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред рдпреЛрдЬрдирд╛рдмрджреНрдз рд░реВрдк рд╕реЗ, рдЗрд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдиреЛрдб рдмрд┐рдВрджреБ рд╣реИред рдореВрд▓ рддрддреНрд╡ рдЬреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ: рдЕрдХреНрд╖рд╛рдВрд╢, рджреЗрд╢рд╛рдВрддрд░ (
рдЕрдХреНрд╖рд╛рдВрд╢ ,
рд▓реЛрди )ред рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рдВрджреБ рдХреА рдЕрдкрдиреА рдЕрдиреВрдареА
рдЖрдИрдбреА рд╣реЛрддреА рд╣реИ , рдЬреЛ рдХрд┐
рдЖрдИрдбреА рдХреЗ рддрд░реАрдХреЗ рдпрд╛
рд╕рдВрдмрдВрдз рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред XML рд╕рдВрдХреЗрддрди рдореЗрдВ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рд╡рд╕реНрддреБ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:
<node id="1877995696" lat="53.9216820" lon="27.5883786"/>
рд░рд╛рд╕реНрддрд╛ рд▓рд╛рдЗрди рд╣реИред рдореВрд▓ рддрддреНрд╡, рдЕрдВрдХреЛрдВ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ
рдЖрдИрдбреА рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛрддрд╛ рд╣реИред
рдЕрдВрдХреЛрдВ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЛ
nd рдЯреИрдЧ рджреНрд╡рд╛рд░рд╛ рдПрдХрд▓
рд░реЗрдлрд░реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд╣рд╛рдВ
рд░реЗрдл рдиреЛрдб рддрддреНрд╡ рдХреА
рдЖрдИрдбреА рдХрд╛ рд╕рдВрджрд░реНрдн рд╣реИред
XML рд╕рдВрдХреЗрддрди рдореЗрдВ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рд╡рд╕реНрддреБ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:
<way id="83643843"> <nd ref="1270318960"/> <nd ref="974055589"/> <nd ref="974055636"/> <nd ref="974055581"/> <nd ref="974055604"/> </way>
рд░рд┐рд╢реНрддрд╛ рдПрдХ рд░рд┐рд╢реНрддрд╛ рд╣реИред рдореВрд▓ рддрддреНрд╡, рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ
рдЖрдИрдбреА рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛрддрд╛ рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╕рдВрдЧреНрд░рд╣
рд╕рджрд╕реНрдп рдЯреИрдЧ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╣реИред
рд╕рджрд╕реНрдп рдЯреИрдЧ рдореЗрдВ рддреАрди рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ:
рдкреНрд░рдХрд╛рд░ - рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдкреНрд░рдХрд╛рд░,
рд░реЗрдл - рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА
рдЖрдИрдбреА рдХрд╛ рд▓рд┐рдВрдХ,
рднреВрдорд┐рдХрд╛ - рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░, рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред
рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ
рдЯреИрдЧ рд╣реИ , рдЗрд╕рдореЗрдВ рджреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ
k - рдХреБрдВрдЬреА (
рдХреБрдВрдЬреА ),
v- рдореВрд▓реНрдп (
рдорд╛рди ) рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЗрд╕ рдЯреИрдЧ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИред рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг
рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред
рдореИрдВрдиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рдЪрд╛рд░ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рд╣реИ:
1. рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рджреГрд╢реНрдп2. SQL рдореЗрдВ рдбреЗрдЯрд╛ рдЖрдпрд╛рдд рдХрд░реЗрдВ3. рдбрд╛рдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ4. XML рдлрд╝рд╛рдЗрд▓ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛редрдХреЛрдб рдХреЛ
github.com рдкрд░ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЖрдЧреЗ рдирд╣реАрдВ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ!
рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рджреГрд╢реНрдпред
рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ
рд╕реНрд╡рд┐рдВрдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдореБрдЦреНрдп рд╕реНрдХреНрд░реАрди рдореЗрдВ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб, рд▓реЗрдмрд▓, рджреЛ рдмрдЯрди, рдПрдХ рдбрд╛рдЙрдирд▓реЛрдб рдмрд╛рд░ рдФрд░ рдПрдХ рд╕рдВрджреЗрд╢ рдмреЙрдХреНрд╕ рд╣реЛрддрд╛ рд╣реИред
DB URL рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ:
jdbc: subprotocol: рд╕рдмрдирд╛рдо ,
рдЬрд╣рд╛рдВ
рд╕рдмрдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдирд╛рдо рдпрд╛ рдХрдиреЗрдХреНрд╢рди рддрдВрддреНрд░ (
mysql ) рдХрд╛ рдирд╛рдо рд╣реИ,
рд╕рдмрдирд╛рдо рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ рдЬреЛ рд╣реЛрд╕реНрдЯ, рдкреЛрд░реНрдЯ, рдбреЗрдЯрд╛рдмреЗрд╕ рдирд╛рдо (
// localhost / ) рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП:
jdbc: mysql: // localhost /рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ - рдбреЗрдЯрд╛рдмреЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдбред
рдкрд╛рд╕рд╡рд░реНрдб - рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖реЗрддреНрд░ред
DB Name - рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдирд╛рдо рдЬреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдпрд╛ рдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
FilePath - рдлрд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдЬрд┐рд╕рд╕реЗ рд╣рдо рдбреЗрдЯрд╛ рд▓реЗрдВрдЧреЗред
рдХрдиреЗрдХреНрдЯ - рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ
рдкреНрд░рд╛рд░рдВрдн - рдЖрдпрд╛рдд рдХрд╛ рдкреНрд░рд╛рд░рдВрднред
рдкреНрд░рд╛рд░рдВрдн рдмрдЯрди
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИ, рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рдлрд▓ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдмрд╛рдж рд╕рдХреНрд░рд┐рдп рд╣реЛрддрд╛ рд╣реИред
рдЦрд┐рдбрд╝рдХреА рдХрд╛ рд░реВрдкред

рдХреЛрдб
public class Window extends Thread { private JFrame window; private JTextField userValue; private JTextField passValue; private JTextField dbNameValue; private TextArea textArea; private JButton btnConnected; private JButton btnExport; private JTextField filePathValue; private JTextField urlValue; private JProgressBar progressBar; public Window() { initialize(); } @Override public void run() { } private void initialize() { window = new JFrame(); window.setTitle("OSMtoMySQL"); window.setResizable(false); window.setBounds(100, 100, 420, 450); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.getContentPane().setLayout(null); JLabel dbUrl = new JLabel("DB URL"); dbUrl.setBounds(10, 29, 100, 14); window.getContentPane().add(dbUrl); urlValue = new JTextField(); urlValue.setText("jdbc:mysql://localhost/"); urlValue.setBounds(120, 26, 203, 20); window.getContentPane().add(urlValue); urlValue.setColumns(10); JLabel user = new JLabel("User"); user.setBounds(10, 54, 100, 14); window.getContentPane().add(user); userValue = new JTextField(); userValue.setText("root"); userValue.setBounds(120, 51, 203, 20); window.getContentPane().add(userValue); userValue.setColumns(10); JLabel pass = new JLabel("Password"); pass.setBounds(10, 79, 100, 14); window.getContentPane().add(pass); passValue = new JTextField(); passValue.setBounds(120, 76, 203, 20); window.getContentPane().add(passValue); passValue.setColumns(10); JLabel dbName = new JLabel("DB Name"); dbName.setBounds(10, 104, 100, 14); window.getContentPane().add(dbName); dbNameValue = new JTextField(); dbNameValue.setText("Belarus"); dbNameValue.setBounds(120, 101, 203, 20); window.getContentPane().add(dbNameValue); dbNameValue.setColumns(10); btnConnected = new JButton("Connect"); btnConnected.setBounds(120, 159, 89, 23); window.getContentPane().add(btnConnected); btnExport = new JButton("Start"); btnExport.setBounds(234, 159, 89, 23); btnExport.setEnabled(false); window.getContentPane().add(btnExport); textArea = new TextArea(); textArea.setEditable(false); textArea.setBounds(10, 237, 394, 175); window.getContentPane().add(textArea); JLabel filePath = new JLabel("FilePath"); filePath.setBounds(10, 129, 46, 14); window.getContentPane().add(filePath); filePathValue = new JTextField(); filePathValue.setText("BY.osm"); filePathValue.setColumns(10); filePathValue.setBounds(120, 126, 203, 20); window.getContentPane().add(filePathValue); progressBar = new JProgressBar(); progressBar.setMaximum(1000); progressBar.setBounds(10, 202, 394, 20); progressBar.setStringPainted(true); window.getContentPane().add(progressBar); } public void addLog(String str) { Calendar cal = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); this.textArea.append(sdf.format(cal.getTime()) + " > " + str + "\n"); } }
рдбреЗрдЯрд╛рдмреЗрд╕
рдореИрдВрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рд╣реИред
CREATE TABLE IF NOT EXISTS node ( id INT (10) UNSIGNED NOT NULL, lat FLOAT (10,7) NOT NULL, lon FLOAT (10,7) NOT NULL, PRIMARY KEY (id) ); CREATE TABLE IF NOT EXISTS way ( id INT (10) UNSIGNED NOT NULL ,PRIMARY KEY (id) ); CREATE TABLE IF NOT EXISTS relation ( id INT (10) UNSIGNED NOT NULL, PRIMARY KEY (id) ); CREATE TABLE IF NOT EXISTS nd ( id INT (10) UNSIGNED NOT NULL ,id_way INT (10) UNSIGNED NOT NULL, id_node INT (10) UNSIGNED NOT NULL, PRIMARY KEY (id), FOREIGN KEY (id_way) REFERENCES way(id), FOREIGN KEY (id_node) REFERENCES node(id) ); CREATE TABLE IF NOT EXISTS tag_key ( id INT (10) UNSIGNED NOT NULL, k VARCHAR(25) NOT NULL, PRIMARY KEY (id) ); CREATE TABLE IF NOT EXISTS tag_value ( id INT (10) UNSIGNED NOT NULL, v VARCHAR(255) NOT NULL, id_tag_key INT (10) UNSIGNED NOT NULL, PRIMARY KEY (id), FOREIGN KEY (id_tag_key) REFERENCES tag_key(id) ); CREATE TABLE IF NOT EXISTS node_tag ( id INT (10) UNSIGNED NOT NULL, id_node INT (10) UNSIGNED NOT NULL, id_tag INT (10) UNSIGNED NOT NULL, PRIMARY KEY (id), FOREIGN KEY (id_node) REFERENCES node(id), FOREIGN KEY (id_tag) REFERENCES tag_value(id) ); CREATE TABLE IF NOT EXISTS way_tag ( id INT (10) UNSIGNED NOT NULL, id_way INT (10) UNSIGNED NOT NULL, id_tag INT (10) UNSIGNED NOT NULL, PRIMARY KEY (id), FOREIGN KEY (id_way) REFERENCES way(id), FOREIGN KEY (id_tag) REFERENCES tag_value(id) ); CREATE TABLE IF NOT EXISTS relation_tag ( id INT (10) UNSIGNED NOT NULL, id_relation INT (10) UNSIGNED NOT NULL, id_tag INT (10) UNSIGNED NOT NULL, PRIMARY KEY (id), FOREIGN KEY (id_relation) REFERENCES relation(id), FOREIGN KEY (id_tag) REFERENCES tag_value(id) ); CREATE TABLE IF NOT EXISTS role ( id INT (10) UNSIGNED NOT NULL, v VARCHAR(25) NOT NULL, PRIMARY KEY (id) ); CREATE TABLE IF NOT EXISTS member_node ( id INT (10) UNSIGNED NOT NULL, id_node INT (10) UNSIGNED NOT NULL, id_relation INT (10) UNSIGNED NOT NULL, id_role INT (10) UNSIGNED NOT NULL, PRIMARY KEY (id), FOREIGN KEY (id_relation) REFERENCES relation(id), FOREIGN KEY (id_role) REFERENCES role(id) ); CREATE TABLE IF NOT EXISTS member_way ( id INT (10) UNSIGNED NOT NULL, id_way INT (10) UNSIGNED NOT NULL, id_relation INT (10) UNSIGNED NOT NULL, id_role INT (10) UNSIGNED NOT NULL, PRIMARY KEY (id),FOREIGN KEY (id_relation) REFERENCES relation(id), FOREIGN KEY (id_role) REFERENCES role(id) ); CREATE TABLE IF NOT EXISTS member_relation ( id INT (10) UNSIGNED NOT NULL, id_rel INT (10) UNSIGNED NOT NULL, id_relation INT (10) UNSIGNED NOT NULL, id_role INT (10) UNSIGNED NOT NULL, PRIMARY KEY (id), FOREIGN KEY (id_relation) REFERENCES relation(id), FOREIGN KEY (id_role) REFERENCES role(id) ); INSERT INTO `tag_key` (`id`,`k`) VALUES ('1', 'aerialway'),('2', 'aeroway'),('3', 'amenity'),('4', 'barrier'),('5', 'boundary'),('6', 'building'),('7', 'craft'),('8', 'emergency'),('9', 'geological'),('10', 'highway'),('11', 'historic'),('12', 'landuse'),('13', 'leisure'),('14', 'man_made'),('15', 'military'),('16', 'natural'),('17', 'office'),('18', 'place'),('19','cycleway'),('20','bridge'),('21', 'power'),('22', 'public_transport'),('23', 'railway'),('24', 'route'),('25', 'shop'),('26', 'sport'),('27', 'tourism'),('28', 'waterway'),('29','tunnel'),('30','type'),('31','admin_level'),('100', 'addr:housenumber'),('101', 'addr:housename'),('102', 'addr:street'),('103', 'addr:place'),('104', 'addr:postcode'),('105', 'addr:city'),('106', 'addr:country'),('107', 'addr:province'),('108', 'addr:state'),('109', 'addr:interpolation'),('110', 'attribution'),('111', 'description'),('112', 'email'),('113', 'fax'),('114', 'phone'),('115', 'name'),('116', 'official_name');
рдмрдирд╛рдИ рдЧрдИ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг:
рдиреЛрдб :
рдЖрдИрдбреА рдЕрджреНрд╡рд┐рддреАрдп рдХреБрдВрдЬреА,
рд▓реИрдЯ, рд▓реЛрди - рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХред
рддрд░реАрдХрд╛ :
рдЖрдИрдбреА рдЕрджреНрд╡рд┐рддреАрдп рдХреБрдВрдЬреАред
рд╕рдВрдмрдВрдз :
рдЖрдИрдбреА рдЕрджреНрд╡рд┐рддреАрдп рдХреБрдВрдЬреАред
nd :
id рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдХреБрдВрдЬреА рд╣реИ (
рдХрд╛рдЙрдВрдЯрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рд╣реИ ),
id_way рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рддрд╛рд▓рд┐рдХрд╛ рдХреА
рдЖрдИрдбреА рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд╣реИ,
id_node рдиреЛрдб рдЯреЗрдмрд▓ рдХреА
рдЖрдИрдбреА рдХрд╛ рдПрдХ рд▓рд┐рдВрдХ рд╣реИред
рдЯреИрдЧ_рдХреА :
рдЖрдИрдбреА рдЕрджреНрд╡рд┐рддреАрдп рдХреБрдВрдЬреА,
k - рдкрд╛рда рдорд╛рди (
рдореБрдЦреНрдп рд╡рд┐рд╡рд░рдг )
tag_value :
id рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдХреБрдВрдЬреА рд╣реИ (
рдХрд╛рдЙрдВрдЯрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рд╣реИ ),
v рдкрд╛рда рдорд╛рди (
рдХреБрдВрдЬреА рдорд╛рди ) рд╣реИ,
id_tag_key рдЯреИрдЧ_key рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ
рдЖрдИрдбреА рдХрд╛ рд▓рд┐рдВрдХ рд╣реИред
рдиреЛрдб_рдЯреИрдЧ :
рдЖрдИрдбреА рдПрдХ рдЕрдиреВрдареА рдХреБрдВрдЬреА рд╣реИ (
рдХрд╛рдЙрдВрдЯрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рд╣реИ ),
рдЖрдИрдбреА_рдПрдирдУрдбреА рдиреЛрдб рдЯреЗрдмрд▓ рдХреА
рдЖрдИрдбреА рдХрд╛ рдПрдХ рд▓рд┐рдВрдХ рд╣реИ,
рдЖрдИрдбреА_рдЯреИрдЧ рдЯреИрдЧ_рд╡рд▓реНрдпреВ рдЯреЗрдмрд▓ рдореЗрдВ
рдЖрдИрдбреА рдХрд╛ рд▓рд┐рдВрдХ рд╣реИред
рд░рд╛рд╕реНрддрд╛ _ рдЯреИрдЧ :
рдЖрдИрдбреА рдПрдХ рдЕрдиреВрдареА рдХреБрдВрдЬреА рд╣реИ (
рдХрд╛рдЙрдВрдЯрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рд╣реИ ),
рдЖрдИрдбреА_рд╡реЗ рд░рд╛рд╕реНрддреЗ рдХреА
рдЖрдИрдбреА рдХреА рдПрдХ рдХрдбрд╝реА рд╣реИ,
рдЖрдИрдбреА_рдЯреИрдЧ рдЯреИрдЧ_рд╡рд▓реНрдпреВ рдЯреЗрдмрд▓ рдореЗрдВ
рдЖрдИрдбреА рдХрд╛ рд▓рд┐рдВрдХ рд╣реИред
relation_tag :
id рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдХреБрдВрдЬреА рд╣реИ (
рдХрд╛рдЙрдВрдЯрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рд╣реИ ),
id_relation рд╕рдВрдмрдВрдз рддрд╛рд▓рд┐рдХрд╛ рдХреА
рдЖрдИрдбреА рдХрд╛ рдПрдХ рд▓рд┐рдВрдХ рд╣реИ,
id_tag рдЯреИрдЧ_рд╡рд▓реНрдпреВ рдЯреЗрдмрд▓ рдореЗрдВ
рдЖрдИрдбреА рдХрд╛ рд▓рд┐рдВрдХ рд╣реИред
рднреВрдорд┐рдХрд╛ :
рдЖрдИрдбреА рдЕрджреНрд╡рд┐рддреАрдп рдХреБрдВрдЬреА (
рдХрд╛рдЙрдВрдЯрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдЬрд╛рддреА рд╣реИ ),
v - рдкрд╛рда рдорд╛рди (
рд╡рд┐рд╢реЗрд╖рддрд╛ рдорд╛рди )ред
member_node :
id рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдХреБрдВрдЬреА рд╣реИ (
рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдХрд╛рдЙрдВрдЯрд░ рд╕рднреА рд╕рджрд╕реНрдп рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╣реИ ),
id_node рдиреЛрдб рдЯреЗрдмрд▓ рдХреА
рдЖрдИрдбреА рдХрд╛ рдПрдХ рд▓рд┐рдВрдХ рд╣реИ,
id_relation рд╕рдВрдмрдВрдз рддрд╛рд▓рд┐рдХрд╛ рдХреА
рдЖрдИрдбреА рдХрд╛ рдПрдХ рд▓рд┐рдВрдХ рд╣реИред
member_way :
id рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдХреБрдВрдЬреА рд╣реИ (
рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдХрд╛рдЙрдВрдЯрд░ рд╕рднреА рд╕рджрд╕реНрдп рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╣реИ ),
id_way рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рддрд╛рд▓рд┐рдХрд╛ рдХреА
рдЖрдИрдбреА рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд╣реИ,
id_relation рд╕рдВрдмрдВрдз рддрд╛рд▓рд┐рдХрд╛ рдХреА
рдЖрдИрдбреА рдХрд╛ рдПрдХ рд▓рд┐рдВрдХ рд╣реИред
рд╕рджрд╕реНрдп_ рд╕рдВрдмрдВрдз :
рдЖрдИрдбреА рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдХреБрдВрдЬреА рд╣реИ (
рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдХрд╛рдЙрдВрдЯрд░ рд╕рднреА рд╕рджрд╕реНрдп рдХреЗ рд▓рд┐рдП рдЖрдо рд╣реИ ),
рдЖрдИрдбреА_рд░реЗрд▓ рд╕рдВрдмрдВрдз рддрд╛рд▓рд┐рдХрд╛ рдХреА
рдЖрдИрдбреА рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд╣реИ,
рдЖрдИрдбреА_ рд╕рдВрдмрдВрдз рд╕рдВрдмрдВрдз рддрд╛рд▓рд┐рдХрд╛ рдХреА
рдЖрдИрдбреА рдХрд╛ рдПрдХ рд▓рд┐рдВрдХ рд╣реИред
рдХреЛрдб
public final class SqlDriver { private long iTagKey; private long iTagUK; private long iTagValue; private long iTagUValue; private long iNd; private long iTagNode; private long iTagWay; private long iTagRelation; private long iMember; private long iRole; private Statement statement; private Connection connection; private Window window; private Element e; public SqlDriver(Window w) { this.window = w; this.iRole = 1; this.iNd = 1; this.iMember = 1; this.iTagNode = 1; this.iTagWay = 1; this.iTagRelation = 1; this.iTagUK = 1; this.iTagUValue = 1; this.iTagValue = 1; this.e = new Element("node", 0); }
рддрд░реНрдХ
SAX XML рдкрд╛рд░реНрд╕рд░
рдЪреВрдВрдХрд┐ рдореИрдВрдиреЗ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░реЗрд╕ рдмрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ , рдлрд╝рд╛рдЗрд▓ рдХреЛ рджреЛ рдмрд╛рд░ рдкрдврд╝рд╛ рдЧрдпрд╛ рдерд╛, рдкрд╣рд▓реЗ рд╣рдо рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрд┐рдирддреА рдХрд░рддреЗ рд╣реИрдВ, рджреВрд╕рд░реЗ рдореЗрдВ рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд▓рд┐рдЦрддреЗ рд╣реИрдВредXML рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░
public class XML extends Thread { private Window window; private SqlDriver sql; public XML(SqlDriver sql, Window window ) { this.window = window; this.sql = sql; } @Override public void run() { SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setValidating(false); factory.setNamespaceAware(false); SAXParser parser; InputStream xmlData = null; try { xmlData = new FileInputStream(window.getFilePathValue().getText()); parser = factory.newSAXParser(); XMLReader reader = new XMLReader(); window.addLog(" "); parser.parse(xmlData, reader); window.addLog(" : " + Long.toString(reader.getLine())); window.addLog("node: " + Long.toString(reader.getNode())); window.addLog("way: " + Long.toString(reader.getWay())); window.addLog("relation: " + Long.toString(reader.getRelation())); window.addLog(" MySQL"); xmlData.close(); xmlData = new FileInputStream(window.getFilePathValue().getText()); XMLParser xml =new XMLParser(sql, window, reader.getLine()); parser.parse(xmlData, xml); } catch (FileNotFoundException e) { e.printStackTrace();
XML рд░реАрдбрд░
public class XMLReader extends DefaultHandler { private long line; private long node; private long way; private long relation; public XMLReader() { this.line = 0; this.node = 0; this.way = 0; this.relation = 0; } @Override public void startElement(String uri, String name, String eName, Attributes atts) { this.line++; if (eName.equals("way")) this.way++; if (eName.equals("node")) this.node++; if (eName.equals("relation")) this.relation++; } @Override public void endElement(String uri, String name, String eName) { } @Override public void startDocument() throws SAXException { super.startDocument(); } @Override public void endDocument() throws SAXException { super.endDocument(); } }
XML рдкрд╛рд░реНрд╕рд░
public class XMLParser extends DefaultHandler { private int ipmplement; private long line; private LogicOSM logic; private Window widnow; private long onePercent; private long nextPercent; private boolean extension; private String elemName; private Long idStart; public XMLParser(SqlDriver sql, Window window, long maxLine) { this.line = 1; this.widnow = window; this.logic = new LogicOSM(sql); this.onePercent = (long) (maxLine / 1000); this.nextPercent = onePercent; if (sql.getE().getId() != 0) { this.extension = true; this.elemName = sql.getE().getName(); this.idStart = sql.getE().getId(); this.ipmplement = 0; } else this.extension = false; } @Override public void startElement(String uri, String name, String eName, Attributes atts) { if (ipmplement == 0) {
рдЦреИрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдХ
public class Controler{ private final Window window; private final SqlDriver sql; public Controler() { this.window = new Window(); window.start(); this.sql = new SqlDriver(window); } public void init() { System.out.println(" run Controller"); try { window.getFrame().setVisible(true); window.addLog("Hello"); window.getConnected().addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if(sql.getConnection()) sql.loadSchema(); window.getConnected().setEnabled(false); window.getExport().setEnabled(true); } }); window.getExport().addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { window.addLog("Export"); window.getExport().setEnabled(false); XML xml = new XML(sql, window); xml.start(); } }); } catch (Exception e) { e.printStackTrace(); } }
рдФрд░ рдирддреАрдЬрд╛
