├── location-demo ├── app │ ├── models │ │ └── .gitkeep │ ├── routes │ │ └── .gitkeep │ ├── styles │ │ └── app.css │ ├── components │ │ ├── .gitkeep │ │ └── region-show.js │ ├── controllers │ │ └── .gitkeep │ ├── helpers │ │ └── .gitkeep │ ├── templates │ │ ├── components │ │ │ ├── .gitkeep │ │ │ └── region-show.hbs │ │ └── application.hbs │ ├── resolver.js │ ├── router.js │ ├── app.js │ ├── index.html │ ├── services │ │ └── region.js │ └── regions │ │ ├── province.js │ │ └── province_object.js ├── tests │ ├── unit │ │ ├── .gitkeep │ │ └── services │ │ │ └── region-test.js │ ├── helpers │ │ └── .gitkeep │ ├── integration │ │ ├── .gitkeep │ │ └── components │ │ │ └── region-show-test.js │ ├── test-helper.js │ └── index.html ├── vendor │ └── .gitkeep ├── .watchmanconfig ├── config │ ├── optional-features.json │ ├── targets.js │ └── environment.js ├── public │ └── robots.txt ├── .template-lintrc.js ├── jsconfig.json ├── .ember-cli ├── .eslintignore ├── .travis.yml ├── .editorconfig ├── .gitignore ├── testem.js ├── .eslintrc.js ├── ember-cli-build.js ├── README.md └── package.json ├── src ├── village.tar.gz ├── special_city.json ├── province.json └── city.json ├── Makefile ├── package.json ├── mysql ├── init.sql ├── province.sql └── city.sql ├── .gitignore ├── json ├── province.json └── province_object.json ├── js ├── province.js └── province_object.js ├── pull.js ├── README.md ├── makedata.py ├── LICENSE ├── main.js └── yarn.lock /location-demo/app/models/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /location-demo/app/routes/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /location-demo/app/styles/app.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /location-demo/tests/unit/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /location-demo/vendor/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /location-demo/app/components/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /location-demo/app/controllers/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /location-demo/app/helpers/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /location-demo/tests/helpers/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /location-demo/tests/integration/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /location-demo/app/templates/components/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /location-demo/.watchmanconfig: -------------------------------------------------------------------------------- 1 | { 2 | "ignore_dirs": ["tmp", "dist"] 3 | } 4 | -------------------------------------------------------------------------------- /location-demo/config/optional-features.json: -------------------------------------------------------------------------------- 1 | { 2 | "jquery-integration": true 3 | } 4 | -------------------------------------------------------------------------------- /src/village.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wecatch/china_regions/HEAD/src/village.tar.gz -------------------------------------------------------------------------------- /location-demo/public/robots.txt: -------------------------------------------------------------------------------- 1 | # http://www.robotstxt.org 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /location-demo/app/resolver.js: -------------------------------------------------------------------------------- 1 | import Resolver from 'ember-resolver'; 2 | 3 | export default Resolver; 4 | -------------------------------------------------------------------------------- /location-demo/.template-lintrc.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = { 4 | extends: 'recommended' 5 | }; 6 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | pack_village: 2 | cd src && tar -czf village.tar.gz village.json 3 | unpack_village: 4 | cd src && tar xvfz village.tar.gz -------------------------------------------------------------------------------- /location-demo/jsconfig.json: -------------------------------------------------------------------------------- 1 | {"compilerOptions":{"target":"es6","experimentalDecorators":true},"exclude":["node_modules","bower_components","tmp","vendor",".git","dist"]} -------------------------------------------------------------------------------- /location-demo/tests/test-helper.js: -------------------------------------------------------------------------------- 1 | import Application from '../app'; 2 | import config from '../config/environment'; 3 | import { setApplication } from '@ember/test-helpers'; 4 | import { start } from 'ember-qunit'; 5 | 6 | setApplication(Application.create(config.APP)); 7 | 8 | start(); 9 | -------------------------------------------------------------------------------- /location-demo/app/router.js: -------------------------------------------------------------------------------- 1 | import EmberRouter from '@ember/routing/router'; 2 | import config from './config/environment'; 3 | 4 | const Router = EmberRouter.extend({ 5 | location: config.locationType, 6 | rootURL: config.rootURL 7 | }); 8 | 9 | Router.map(function() { 10 | }); 11 | 12 | export default Router; 13 | -------------------------------------------------------------------------------- /location-demo/.ember-cli: -------------------------------------------------------------------------------- 1 | { 2 | /** 3 | Ember CLI sends analytics information by default. The data is completely 4 | anonymous, but there are times when you might want to disable this behavior. 5 | 6 | Setting `disableAnalytics` to true will prevent any data from being sent. 7 | */ 8 | "disableAnalytics": false 9 | } 10 | -------------------------------------------------------------------------------- /location-demo/.eslintignore: -------------------------------------------------------------------------------- 1 | # unconventional js 2 | /blueprints/*/files/ 3 | /vendor/ 4 | 5 | # compiled output 6 | /dist/ 7 | /tmp/ 8 | 9 | # dependencies 10 | /bower_components/ 11 | /node_modules/ 12 | 13 | # misc 14 | /coverage/ 15 | !.* 16 | 17 | # ember-try 18 | /.node_modules.ember-try/ 19 | /bower.json.ember-try 20 | /package.json.ember-try 21 | -------------------------------------------------------------------------------- /location-demo/config/targets.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const browsers = [ 4 | 'last 1 Chrome versions', 5 | 'last 1 Firefox versions', 6 | 'last 1 Safari versions' 7 | ]; 8 | 9 | const isCI = !!process.env.CI; 10 | const isProduction = process.env.EMBER_ENV === 'production'; 11 | 12 | if (isCI || isProduction) { 13 | browsers.push('ie 11'); 14 | } 15 | 16 | module.exports = { 17 | browsers 18 | }; 19 | -------------------------------------------------------------------------------- /location-demo/tests/unit/services/region-test.js: -------------------------------------------------------------------------------- 1 | import { moduleFor, test } from 'ember-qunit'; 2 | 3 | moduleFor('service:region', 'Unit | Service | region', { 4 | // Specify the other units that are required for this test. 5 | // needs: ['service:foo'] 6 | }); 7 | 8 | // Replace this with your real tests. 9 | test('it exists', function(assert) { 10 | let service = this.subject(); 11 | assert.ok(service); 12 | }); 13 | -------------------------------------------------------------------------------- /location-demo/app/app.js: -------------------------------------------------------------------------------- 1 | import Application from '@ember/application'; 2 | import Resolver from './resolver'; 3 | import loadInitializers from 'ember-load-initializers'; 4 | import config from './config/environment'; 5 | 6 | const App = Application.extend({ 7 | modulePrefix: config.modulePrefix, 8 | podModulePrefix: config.podModulePrefix, 9 | Resolver 10 | }); 11 | 12 | loadInitializers(App, config.modulePrefix); 13 | 14 | export default App; 15 | -------------------------------------------------------------------------------- /src/special_city.json: -------------------------------------------------------------------------------- 1 | [{ 2 | "id": "441900000000", 3 | "name": "东莞市", 4 | "url": "http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2018/44/4419.html" 5 | },{ 6 | "id": "442000000000", 7 | "name": "中山市", 8 | "url": "http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2018/44/4420.html" 9 | },{ 10 | "id": "460400000000", 11 | "name": "儋州市", 12 | "url": "http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2018/46/4604.html" 13 | }] -------------------------------------------------------------------------------- /location-demo/.travis.yml: -------------------------------------------------------------------------------- 1 | --- 2 | language: node_js 3 | node_js: 4 | - "6" 5 | 6 | sudo: false 7 | dist: trusty 8 | 9 | addons: 10 | chrome: stable 11 | 12 | cache: 13 | directories: 14 | - $HOME/.npm 15 | 16 | env: 17 | global: 18 | # See https://git.io/vdao3 for details. 19 | - JOBS=1 20 | 21 | before_install: 22 | - npm config set spin false 23 | 24 | script: 25 | - npm run lint:hbs 26 | - npm run lint:js 27 | - npm test 28 | -------------------------------------------------------------------------------- /location-demo/.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig helps developers define and maintain consistent 2 | # coding styles between different editors and IDEs 3 | # editorconfig.org 4 | 5 | root = true 6 | 7 | 8 | [*] 9 | end_of_line = lf 10 | charset = utf-8 11 | trim_trailing_whitespace = true 12 | insert_final_newline = true 13 | indent_style = space 14 | indent_size = 2 15 | 16 | [*.hbs] 17 | insert_final_newline = false 18 | 19 | [*.{diff,md}] 20 | trim_trailing_whitespace = false 21 | -------------------------------------------------------------------------------- /location-demo/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist/ 5 | /tmp/ 6 | 7 | # dependencies 8 | /bower_components/ 9 | /node_modules/ 10 | 11 | # misc 12 | /.env* 13 | /.pnp* 14 | /.sass-cache 15 | /connect.lock 16 | /coverage/ 17 | /libpeerconnection.log 18 | /npm-debug.log* 19 | /testem.log 20 | /yarn-error.log 21 | 22 | # ember-try 23 | /.node_modules.ember-try/ 24 | /bower.json.ember-try 25 | /package.json.ember-try 26 | -------------------------------------------------------------------------------- /location-demo/testem.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | test_page: 'tests/index.html?hidepassed', 3 | disable_watching: true, 4 | launch_in_ci: [ 5 | 'Chrome' 6 | ], 7 | launch_in_dev: [ 8 | 'Chrome' 9 | ], 10 | browser_args: { 11 | Chrome: { 12 | ci: [ 13 | // --no-sandbox is needed when running Chrome inside a container 14 | process.env.CI ? '--no-sandbox' : null, 15 | '--headless', 16 | '--disable-gpu', 17 | '--disable-dev-shm-usage', 18 | '--disable-software-rasterizer', 19 | '--mute-audio', 20 | '--remote-debugging-port=0', 21 | '--window-size=1440,900' 22 | ].filter(Boolean) 23 | } 24 | } 25 | }; 26 | -------------------------------------------------------------------------------- /location-demo/app/templates/components/region-show.hbs: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 | {{#ui-select options=provinceOptions search=true value=(mut searchOptions.province_id) placeholder="省" namePath="name" valuePath="id" }}{{/ui-select}} 5 | {{#ui-select options=cityOptions placeholder="市" search=true value=(mut searchOptions.city_id) namePath="name" valuePath="id" }}{{/ui-select}} 6 | {{#ui-select options=areaOptions placeholder="地区" search=true value=(mut searchOptions.area_id) namePath="name" valuePath="id" }}{{/ui-select}} 7 |
8 |

9 | {{province.name}} 10 | {{city.name}} 11 | {{area.name}} 12 |

13 | 14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /location-demo/tests/integration/components/region-show-test.js: -------------------------------------------------------------------------------- 1 | import { moduleForComponent, test } from 'ember-qunit'; 2 | import hbs from 'htmlbars-inline-precompile'; 3 | 4 | moduleForComponent('region-show', 'Integration | Component | region show', { 5 | integration: true 6 | }); 7 | 8 | test('it renders', function(assert) { 9 | 10 | // Set any properties with this.set('myProperty', 'value'); 11 | // Handle any actions with this.on('myAction', function(val) { ... }); 12 | 13 | this.render(hbs`{{region-show}}`); 14 | 15 | assert.equal(this.$().text().trim(), ''); 16 | 17 | // Template block usage: 18 | this.render(hbs` 19 | {{#region-show}} 20 | template block text 21 | {{/region-show}} 22 | `); 23 | 24 | assert.equal(this.$().text().trim(), 'template block text'); 25 | }); 26 | -------------------------------------------------------------------------------- /location-demo/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | parserOptions: { 4 | ecmaVersion: 2017, 5 | sourceType: 'module' 6 | }, 7 | plugins: [ 8 | 'ember' 9 | ], 10 | extends: [ 11 | 'eslint:recommended', 12 | 'plugin:ember/recommended' 13 | ], 14 | env: { 15 | browser: true 16 | }, 17 | rules: { 18 | }, 19 | overrides: [ 20 | // node files 21 | { 22 | files: [ 23 | '.eslintrc.js', 24 | '.template-lintrc.js', 25 | 'ember-cli-build.js', 26 | 'testem.js', 27 | 'blueprints/*/index.js', 28 | 'config/**/*.js', 29 | 'lib/*/index.js', 30 | 'server/**/*.js' 31 | ], 32 | parserOptions: { 33 | sourceType: 'script', 34 | ecmaVersion: 2015 35 | }, 36 | env: { 37 | browser: false, 38 | node: true 39 | } 40 | } 41 | ] 42 | }; 43 | -------------------------------------------------------------------------------- /location-demo/app/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | LocationDemo 7 | 8 | 9 | 10 | {{content-for "head"}} 11 | 12 | 13 | 14 | 15 | 16 | 17 | {{content-for "head-footer"}} 18 | 19 | 20 | {{content-for "body"}} 21 | 22 | 23 | 24 | 25 | {{content-for "body-footer"}} 26 | 27 | 28 | -------------------------------------------------------------------------------- /location-demo/app/services/region.js: -------------------------------------------------------------------------------- 1 | import Ember from 'ember'; 2 | import { country } from '../regions/country'; 3 | import { province } from '../regions/province'; 4 | import { city } from '../regions/city'; 5 | 6 | import { country_object } from '../regions/country_object'; 7 | import { province_object } from '../regions/province_object'; 8 | import { city_object } from '../regions/city_object'; 9 | 10 | export default Ember.Service.extend({ 11 | provinceOptions: province, 12 | cityOptions: city, 13 | areaOptions: country, 14 | getCity(provinceId){ 15 | return provinceId ? city[provinceId] : [] 16 | }, 17 | getArea(cityId){ 18 | return cityId ? country[cityId] : []; 19 | }, 20 | getProvinceObject(id){ 21 | return province_object[id] || ''; 22 | }, 23 | getCityObject(id){ 24 | return city_object[id] || ''; 25 | }, 26 | getAreaObject(id){ 27 | return country_object[id] || ''; 28 | }, 29 | }); 30 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "china_regions", 3 | "version": "3.1.0", 4 | "files": [ 5 | "js/*", 6 | "json/*" 7 | ], 8 | "description": "最全最新中国省,市,地区数据", 9 | "main": "index.js", 10 | "scripts": { 11 | "test": "echo \"Error: no test specified\" && exit 1" 12 | }, 13 | "repository": { 14 | "type": "git", 15 | "url": "git+https://github.com/wecatch/china_regions.git" 16 | }, 17 | "keywords": [ 18 | "china", 19 | "regions", 20 | "datasource" 21 | ], 22 | "author": "wecatch.me", 23 | "license": "MIT", 24 | "bugs": { 25 | "url": "https://github.com/wecatch/china_regions/issues" 26 | }, 27 | "homepage": "https://github.com/wecatch/china_regions#readme", 28 | "devDependencies": { 29 | "bluebird": "^3.5.3", 30 | "iconv-lite": "^0.4.24", 31 | "jquery": "^3.4.0", 32 | "jsdom": "^13.2.0", 33 | "log4js": "^4.0.1", 34 | "request": "^2.88.0", 35 | "request-promise": "^4.2.2", 36 | "system-sleep": "^1.3.6", 37 | "tracer": "^0.9.8" 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /location-demo/app/templates/application.hbs: -------------------------------------------------------------------------------- 1 | {{!-- The following component displays Ember's default welcome message. --}} 2 | 3 | {{!-- {{welcome-page}} --}} 4 | {{!-- Feel free to remove this! --}} 5 | 6 |
7 |
8 |
9 |
10 |
11 |
12 | Github 13 | Wecatch 14 |
15 |
16 |
17 |
18 | {{#region-show}}{{/region-show}} 19 |
20 |
21 |
22 |
23 |

24 | Powered by wecatch 25 |

26 |
27 | -------------------------------------------------------------------------------- /mysql/init.sql: -------------------------------------------------------------------------------- 1 | SET FOREIGN_KEY_CHECKS=0; 2 | 3 | 4 | DROP TABLE IF EXISTS province; 5 | CREATE TABLE province ( 6 | _id int, 7 | name varchar(64), 8 | province_id varchar(12), 9 | PRIMARY KEY (_id) 10 | ); 11 | 12 | 13 | DROP TABLE IF EXISTS city; 14 | CREATE TABLE city ( 15 | _id int, 16 | name varchar(64), 17 | city_id varchar(12), 18 | province_id varchar(12), 19 | PRIMARY KEY (_id) 20 | ); 21 | 22 | 23 | DROP TABLE IF EXISTS county; 24 | CREATE TABLE county ( 25 | _id int, 26 | name varchar(64), 27 | county_id varchar(12), 28 | city_id varchar(12), 29 | PRIMARY KEY (_id) 30 | ); 31 | 32 | 33 | DROP TABLE IF EXISTS town; 34 | CREATE TABLE town ( 35 | _id int, 36 | name varchar(64), 37 | town_id varchar(12), 38 | county_id varchar(12), 39 | PRIMARY KEY (_id) 40 | ); 41 | 42 | 43 | DROP TABLE IF EXISTS village; 44 | CREATE TABLE village ( 45 | _id int, 46 | name varchar(64), 47 | village_id varchar(12), 48 | town_id varchar(12), 49 | PRIMARY KEY (_id) 50 | ); -------------------------------------------------------------------------------- /location-demo/ember-cli-build.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const EmberApp = require('ember-cli/lib/broccoli/ember-app'); 4 | 5 | module.exports = function(defaults) { 6 | var options = {}; 7 | 8 | if (process.env.EMBER_ENV === 'gh-pages') { 9 | options.minifyJS = { 10 | enabled: true 11 | }; 12 | options.sourcemaps = { 13 | enabled: false 14 | }; 15 | } 16 | 17 | var app = new EmberApp(defaults, options); 18 | 19 | // Use `app.import` to add additional libraries to the generated 20 | // output files. 21 | // 22 | // If you need to use different assets in different 23 | // environments, specify an object as the first parameter. That 24 | // object's keys should be the environment name and the values 25 | // should be the asset to use in that environment. 26 | // 27 | // If the library that you are including contains AMD or ES6 28 | // modules that you would like to import into your application 29 | // please specify an object with the list of modules as keys 30 | // along with the exports of each module as its value. 31 | 32 | return app.toTree(); 33 | }; 34 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | 5 | # C extensions 6 | *.so 7 | 8 | # Distribution / packaging 9 | .Python 10 | env/ 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | *.egg-info/ 23 | .installed.cfg 24 | *.egg 25 | 26 | # PyInstaller 27 | # Usually these files are written by a python script from a template 28 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 29 | *.manifest 30 | *.spec 31 | 32 | # Installer logs 33 | pip-log.txt 34 | pip-delete-this-directory.txt 35 | 36 | # Unit test / coverage reports 37 | htmlcov/ 38 | .tox/ 39 | .coverage 40 | .coverage.* 41 | .cache 42 | nosetests.xml 43 | coverage.xml 44 | *,cover 45 | 46 | # Translations 47 | *.mo 48 | *.pot 49 | 50 | # Django stuff: 51 | *.log 52 | 53 | # Sphinx documentation 54 | docs/_build/ 55 | 56 | # PyBuilder 57 | target/ 58 | .DS_Store 59 | src/village_backup.json 60 | js/village*.js 61 | json/village*.json 62 | mysql/village*.sql 63 | src/village.json 64 | node_modules 65 | .vscode/ 66 | -------------------------------------------------------------------------------- /location-demo/tests/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | LocationDemo Tests 7 | 8 | 9 | 10 | {{content-for "head"}} 11 | {{content-for "test-head"}} 12 | 13 | 14 | 15 | 16 | 17 | {{content-for "head-footer"}} 18 | {{content-for "test-head-footer"}} 19 | 20 | 21 | {{content-for "body"}} 22 | {{content-for "test-body"}} 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | {{content-for "body-footer"}} 31 | {{content-for "test-body-footer"}} 32 | 33 | 34 | -------------------------------------------------------------------------------- /location-demo/config/environment.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = function(environment) { 4 | var ENV = { 5 | modulePrefix: 'location-demo', 6 | environment: environment, 7 | rootURL: '/', 8 | locationType: 'auto', 9 | EmberENV: { 10 | FEATURES: { 11 | // Here you can enable experimental features on an ember canary build 12 | // e.g. EMBER_NATIVE_DECORATOR_SUPPORT: true 13 | }, 14 | EXTEND_PROTOTYPES: { 15 | // Prevent Ember Data from overriding Date.parse. 16 | Date: false 17 | } 18 | }, 19 | 20 | APP: { 21 | // Here you can pass flags/options to your application instance 22 | // when it is created 23 | } 24 | }; 25 | 26 | if(environment === 'gh-pages'){ 27 | ENV.rootURL = '/china_regions/' 28 | } 29 | 30 | if (environment === 'development') { 31 | // ENV.APP.LOG_RESOLVER = true; 32 | // ENV.APP.LOG_ACTIVE_GENERATION = true; 33 | // ENV.APP.LOG_TRANSITIONS = true; 34 | // ENV.APP.LOG_TRANSITIONS_INTERNAL = true; 35 | // ENV.APP.LOG_VIEW_LOOKUPS = true; 36 | } 37 | 38 | if (environment === 'test') { 39 | // Testem prefers this... 40 | ENV.locationType = 'none'; 41 | 42 | // keep test console output quieter 43 | ENV.APP.LOG_ACTIVE_GENERATION = false; 44 | ENV.APP.LOG_VIEW_LOOKUPS = false; 45 | 46 | ENV.APP.rootElement = '#ember-testing'; 47 | ENV.APP.autoboot = false; 48 | } 49 | 50 | if (environment === 'production') { 51 | // here you can enable a production-specific feature 52 | } 53 | 54 | return ENV; 55 | }; 56 | -------------------------------------------------------------------------------- /location-demo/README.md: -------------------------------------------------------------------------------- 1 | # location-demo 2 | 3 | This README outlines the details of collaborating on this Ember application. 4 | A short introduction of this app could easily go here. 5 | 6 | ## Prerequisites 7 | 8 | You will need the following things properly installed on your computer. 9 | 10 | * [Git](https://git-scm.com/) 11 | * [Node.js](https://nodejs.org/) (with npm) 12 | * [Ember CLI](https://ember-cli.com/) 13 | * [Google Chrome](https://google.com/chrome/) 14 | 15 | ## Installation 16 | 17 | * `git clone ` this repository 18 | * `cd location-demo` 19 | * `npm install` 20 | 21 | ## Running / Development 22 | 23 | * `ember serve` 24 | * Visit your app at [http://localhost:4200](http://localhost:4200). 25 | * Visit your tests at [http://localhost:4200/tests](http://localhost:4200/tests). 26 | 27 | ### Code Generators 28 | 29 | Make use of the many generators for code, try `ember help generate` for more details 30 | 31 | ### Running Tests 32 | 33 | * `ember test` 34 | * `ember test --server` 35 | 36 | ### Linting 37 | 38 | * `npm run lint:hbs` 39 | * `npm run lint:js` 40 | * `npm run lint:js -- --fix` 41 | 42 | ### Building 43 | 44 | * `ember build` (development) 45 | * `ember build --environment production` (production) 46 | 47 | ### Deploying 48 | 49 | Specify what it takes to deploy your app. 50 | 51 | ## Further Reading / Useful Links 52 | 53 | * [ember.js](https://emberjs.com/) 54 | * [ember-cli](https://ember-cli.com/) 55 | * Development Browser Extensions 56 | * [ember inspector for chrome](https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi) 57 | * [ember inspector for firefox](https://addons.mozilla.org/en-US/firefox/addon/ember-inspector/) 58 | -------------------------------------------------------------------------------- /location-demo/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "location-demo", 3 | "version": "0.0.0", 4 | "private": true, 5 | "description": "Small description for location-demo goes here", 6 | "repository": "", 7 | "license": "MIT", 8 | "author": "", 9 | "directories": { 10 | "doc": "doc", 11 | "test": "tests" 12 | }, 13 | "scripts": { 14 | "build": "ember build", 15 | "lint:hbs": "ember-template-lint .", 16 | "lint:js": "eslint .", 17 | "start": "ember serve", 18 | "test": "ember test" 19 | }, 20 | "devDependencies": { 21 | "@ember/jquery": "^0.5.2", 22 | "@ember/optional-features": "^0.6.3", 23 | "broccoli-asset-rev": "^2.7.0", 24 | "ember-ajax": "^5.0.0", 25 | "ember-cli": "~3.9.0", 26 | "ember-cli-app-version": "^3.2.0", 27 | "ember-cli-babel": "^7.1.2", 28 | "ember-cli-dependency-checker": "^3.1.0", 29 | "ember-cli-eslint": "^4.2.3", 30 | "ember-cli-htmlbars": "^3.0.0", 31 | "ember-cli-htmlbars-inline-precompile": "^1.0.3", 32 | "ember-cli-inject-live-reload": "^1.8.2", 33 | "ember-cli-sri": "^2.1.1", 34 | "ember-cli-template-lint": "^1.0.0-beta.1", 35 | "ember-cli-uglify": "^2.1.0", 36 | "ember-data": "~3.9.0", 37 | "ember-export-application-global": "^2.0.0", 38 | "ember-load-initializers": "^1.1.0", 39 | "ember-maybe-import-regenerator": "^0.1.6", 40 | "ember-qunit": "^3.4.1", 41 | "ember-resolver": "^5.0.1", 42 | "ember-semantic-ui": "^0.2.3", 43 | "ember-source": "~3.9.0", 44 | "ember-welcome-page": "^3.2.0", 45 | "eslint-plugin-ember": "^5.2.0", 46 | "loader.js": "^4.7.0", 47 | "qunit-dom": "^0.8.0" 48 | }, 49 | "engines": { 50 | "node": "6.* || 8.* || >= 10.*" 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /json/province.json: -------------------------------------------------------------------------------- 1 | [{ 2 | "name": "北京市", 3 | "id": "110000000000" 4 | }, { 5 | "name": "天津市", 6 | "id": "120000000000" 7 | }, { 8 | "name": "河北省", 9 | "id": "130000000000" 10 | }, { 11 | "name": "山西省", 12 | "id": "140000000000" 13 | }, { 14 | "name": "内蒙古自治区", 15 | "id": "150000000000" 16 | }, { 17 | "name": "辽宁省", 18 | "id": "210000000000" 19 | }, { 20 | "name": "吉林省", 21 | "id": "220000000000" 22 | }, { 23 | "name": "黑龙江省", 24 | "id": "230000000000" 25 | }, { 26 | "name": "上海市", 27 | "id": "310000000000" 28 | }, { 29 | "name": "江苏省", 30 | "id": "320000000000" 31 | }, { 32 | "name": "浙江省", 33 | "id": "330000000000" 34 | }, { 35 | "name": "安徽省", 36 | "id": "340000000000" 37 | }, { 38 | "name": "福建省", 39 | "id": "350000000000" 40 | }, { 41 | "name": "江西省", 42 | "id": "360000000000" 43 | }, { 44 | "name": "山东省", 45 | "id": "370000000000" 46 | }, { 47 | "name": "河南省", 48 | "id": "410000000000" 49 | }, { 50 | "name": "湖北省", 51 | "id": "420000000000" 52 | }, { 53 | "name": "湖南省", 54 | "id": "430000000000" 55 | }, { 56 | "name": "广东省", 57 | "id": "440000000000" 58 | }, { 59 | "name": "广西壮族自治区", 60 | "id": "450000000000" 61 | }, { 62 | "name": "海南省", 63 | "id": "460000000000" 64 | }, { 65 | "name": "重庆市", 66 | "id": "500000000000" 67 | }, { 68 | "name": "四川省", 69 | "id": "510000000000" 70 | }, { 71 | "name": "贵州省", 72 | "id": "520000000000" 73 | }, { 74 | "name": "云南省", 75 | "id": "530000000000" 76 | }, { 77 | "name": "西藏自治区", 78 | "id": "540000000000" 79 | }, { 80 | "name": "陕西省", 81 | "id": "610000000000" 82 | }, { 83 | "name": "甘肃省", 84 | "id": "620000000000" 85 | }, { 86 | "name": "青海省", 87 | "id": "630000000000" 88 | }, { 89 | "name": "宁夏回族自治区", 90 | "id": "640000000000" 91 | }, { 92 | "name": "新疆维吾尔自治区", 93 | "id": "650000000000" 94 | }] 95 | -------------------------------------------------------------------------------- /js/province.js: -------------------------------------------------------------------------------- 1 | let province = [{ 2 | "name": "北京市", 3 | "id": "110000000000" 4 | }, { 5 | "name": "天津市", 6 | "id": "120000000000" 7 | }, { 8 | "name": "河北省", 9 | "id": "130000000000" 10 | }, { 11 | "name": "山西省", 12 | "id": "140000000000" 13 | }, { 14 | "name": "内蒙古自治区", 15 | "id": "150000000000" 16 | }, { 17 | "name": "辽宁省", 18 | "id": "210000000000" 19 | }, { 20 | "name": "吉林省", 21 | "id": "220000000000" 22 | }, { 23 | "name": "黑龙江省", 24 | "id": "230000000000" 25 | }, { 26 | "name": "上海市", 27 | "id": "310000000000" 28 | }, { 29 | "name": "江苏省", 30 | "id": "320000000000" 31 | }, { 32 | "name": "浙江省", 33 | "id": "330000000000" 34 | }, { 35 | "name": "安徽省", 36 | "id": "340000000000" 37 | }, { 38 | "name": "福建省", 39 | "id": "350000000000" 40 | }, { 41 | "name": "江西省", 42 | "id": "360000000000" 43 | }, { 44 | "name": "山东省", 45 | "id": "370000000000" 46 | }, { 47 | "name": "河南省", 48 | "id": "410000000000" 49 | }, { 50 | "name": "湖北省", 51 | "id": "420000000000" 52 | }, { 53 | "name": "湖南省", 54 | "id": "430000000000" 55 | }, { 56 | "name": "广东省", 57 | "id": "440000000000" 58 | }, { 59 | "name": "广西壮族自治区", 60 | "id": "450000000000" 61 | }, { 62 | "name": "海南省", 63 | "id": "460000000000" 64 | }, { 65 | "name": "重庆市", 66 | "id": "500000000000" 67 | }, { 68 | "name": "四川省", 69 | "id": "510000000000" 70 | }, { 71 | "name": "贵州省", 72 | "id": "520000000000" 73 | }, { 74 | "name": "云南省", 75 | "id": "530000000000" 76 | }, { 77 | "name": "西藏自治区", 78 | "id": "540000000000" 79 | }, { 80 | "name": "陕西省", 81 | "id": "610000000000" 82 | }, { 83 | "name": "甘肃省", 84 | "id": "620000000000" 85 | }, { 86 | "name": "青海省", 87 | "id": "630000000000" 88 | }, { 89 | "name": "宁夏回族自治区", 90 | "id": "640000000000" 91 | }, { 92 | "name": "新疆维吾尔自治区", 93 | "id": "650000000000" 94 | }] 95 | 96 | export {province} -------------------------------------------------------------------------------- /location-demo/app/regions/province.js: -------------------------------------------------------------------------------- 1 | let province = [{ 2 | "name": "北京市", 3 | "id": "110000000000" 4 | }, { 5 | "name": "天津市", 6 | "id": "120000000000" 7 | }, { 8 | "name": "河北省", 9 | "id": "130000000000" 10 | }, { 11 | "name": "山西省", 12 | "id": "140000000000" 13 | }, { 14 | "name": "内蒙古自治区", 15 | "id": "150000000000" 16 | }, { 17 | "name": "辽宁省", 18 | "id": "210000000000" 19 | }, { 20 | "name": "吉林省", 21 | "id": "220000000000" 22 | }, { 23 | "name": "黑龙江省", 24 | "id": "230000000000" 25 | }, { 26 | "name": "上海市", 27 | "id": "310000000000" 28 | }, { 29 | "name": "江苏省", 30 | "id": "320000000000" 31 | }, { 32 | "name": "浙江省", 33 | "id": "330000000000" 34 | }, { 35 | "name": "安徽省", 36 | "id": "340000000000" 37 | }, { 38 | "name": "福建省", 39 | "id": "350000000000" 40 | }, { 41 | "name": "江西省", 42 | "id": "360000000000" 43 | }, { 44 | "name": "山东省", 45 | "id": "370000000000" 46 | }, { 47 | "name": "河南省", 48 | "id": "410000000000" 49 | }, { 50 | "name": "湖北省", 51 | "id": "420000000000" 52 | }, { 53 | "name": "湖南省", 54 | "id": "430000000000" 55 | }, { 56 | "name": "广东省", 57 | "id": "440000000000" 58 | }, { 59 | "name": "广西壮族自治区", 60 | "id": "450000000000" 61 | }, { 62 | "name": "海南省", 63 | "id": "460000000000" 64 | }, { 65 | "name": "重庆市", 66 | "id": "500000000000" 67 | }, { 68 | "name": "四川省", 69 | "id": "510000000000" 70 | }, { 71 | "name": "贵州省", 72 | "id": "520000000000" 73 | }, { 74 | "name": "云南省", 75 | "id": "530000000000" 76 | }, { 77 | "name": "西藏自治区", 78 | "id": "540000000000" 79 | }, { 80 | "name": "陕西省", 81 | "id": "610000000000" 82 | }, { 83 | "name": "甘肃省", 84 | "id": "620000000000" 85 | }, { 86 | "name": "青海省", 87 | "id": "630000000000" 88 | }, { 89 | "name": "宁夏回族自治区", 90 | "id": "640000000000" 91 | }, { 92 | "name": "新疆维吾尔自治区", 93 | "id": "650000000000" 94 | }] 95 | 96 | export {province} -------------------------------------------------------------------------------- /pull.js: -------------------------------------------------------------------------------- 1 | var provinceNode = document.querySelectorAll("p.MsoNormal b span"); 2 | var provinceArray = []; 3 | provinceNode.forEach(function(i, index){ 4 | var length = provinceArray.length; 5 | if(length === 0){ 6 | provinceArray.push({ 7 | "id": i.outerText.trim(), 8 | "name": '' 9 | }) 10 | }else if(!provinceArray[length-1].name){ 11 | if(i.outerText.trim()){ 12 | provinceArray[length-1].name = i.outerText.trim(); 13 | } 14 | }else { 15 | if(i.outerText.trim()){ 16 | provinceArray.push({ 17 | "id": i.outerText.trim(), 18 | "name": '' 19 | }) 20 | } 21 | } 22 | }); 23 | 24 | var cityNode = document.querySelectorAll("p.MsoNormal>span"); 25 | var cityArray = []; 26 | cityNode.forEach(function(i, index){ 27 | var length = cityArray.length; 28 | if(length === 0){ 29 | if (i.outerText.trim()){ 30 | cityArray.push({ 31 | "id": i.outerText.trim(), 32 | "name": '' 33 | }) 34 | } 35 | }else if(!cityArray[length-1].name){ 36 | if(i.outerText.trim()){ 37 | cityArray[length-1].name = i.outerText.trim(); 38 | } 39 | }else { 40 | if(i.outerText.trim()){ 41 | cityArray.push({ 42 | "id": i.outerText.trim(), 43 | "name": '' 44 | }) 45 | } 46 | } 47 | }); 48 | 49 | (function(console){ 50 | 51 | console.save = function(data, filename){ 52 | 53 | if(!data) { 54 | console.error('Console.save: No data') 55 | return; 56 | } 57 | 58 | if(!filename) filename = 'console.json' 59 | 60 | if(typeof data === "object"){ 61 | data = JSON.stringify(data, undefined, 4) 62 | } 63 | 64 | var blob = new Blob([data], {type: 'text/json'}), 65 | e = document.createEvent('MouseEvents'), 66 | a = document.createElement('a') 67 | 68 | a.download = filename 69 | a.href = window.URL.createObjectURL(blob) 70 | a.dataset.downloadurl = ['text/json', a.download, a.href].join(':') 71 | e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null) 72 | a.dispatchEvent(e) 73 | } 74 | })(console) 75 | 76 | 77 | console.save(JSON.stringify(cityArray), 'city.json') 78 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # china_regions 2 | 3 | 最全最新中国省,市,地区 json 及 sql 数据,自动抓取国标 http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/ 数据,并且自动生成 JavaScript es6 module 以及 sql 数据。 4 | 5 | 最新国标行政区规划最低到居委会这一级别了,行政区代码代码也变长了,不包含港澳台信息,按需所需不同的版本,见 https://github.com/wecatch/china_regions/releases 6 | 7 | ## 演示地址 8 | 9 | http://wecatch.me/china_regions/ 10 | 11 | ## 如何使用 12 | 13 | 数据分 json、es6 module、sql 三种格式存储,es6 module 和 sql 是根据 json 自动生成,json 数据又是根据最新国标生成, 14 | 15 | ``` 16 | ├── js # js module 格式 17 | ├── json # json 格式 18 | ├── mysql # mysql sql 格式 19 | ``` 20 | 21 | 直接拷贝 json 和 es6 文件可直接使用,也可以根据对应的语言生成不同的模块。 22 | 23 | 24 | Village 数据文件特别大,默认不包含在仓库中,可以 clone 仓库,在 src 中解压 village 的压缩文件,然后执行 `python makedata.py` 25 | 26 | 27 | ## 如何更新到最新国标 28 | 29 | 仓库中的现在的数据是根据最新国标生成,如果在使用中发现国标有变动,可以手动进行更新,需要有 node8 或更高环境: 30 | 31 | 1. git clone 本仓库 32 | 2. yarn install 或者 npm install 33 | 3. 移除 src 目录下的 json 文件: 34 | 35 | ``` 36 | ├── city.json 37 | ├── country.json 38 | ├── province.json 39 | ├── source.json 40 | ├── town.json 41 | └── village.json 42 | ``` 43 | 44 | 4. 打开 main.js 文件,取消对 main 函数执行的注释,开始执行 `node main.js`,一般情况下可以顺利爬取到 province、 45 | city、country 的信息 46 | 5. 利用已经爬取的 province、city、country 开始同步其他行政区域的信息,注释掉 main 函数根据需要分别打开 pullTownDataSync、pullVillageDataSync 爬取其他行政区域的信息,注释事项见函数注释 47 | 6. 最后执行 `python makedata.py` 生成各种格式文件 48 | 49 | ## 注意事项 50 | 51 | 根据 town 爬取的 village 数据非常大,默认情况下不会自动生成 village 的信息,可以根据自己的需要 clone 仓库之后自己生成 52 | 53 | 行政级别顺序是:province-> city --> country --> town --> village,对应的是:省->市(市辖区)->县(区、市)->镇(街道)->村(居委会) 54 | 55 | 爬取 village 时由于数据量特别大会导致 nodejs 出现内存泄漏的情况,所以每次增量更新文件时会自动进行文件备份,生成 `src/village_backup.json` 备份文件不进仓库,最后再手动干预偏移量 56 | 57 | village 的数据文件是压缩过的解压执行 `tar xvfz village.tar.gz .` 58 | 59 | 默认情况下不生成 village 这个级别的数据,如果需要请执行 `makedata.py` 60 | 61 | 62 | ## 反馈 63 | 64 | 如果国标页面 html 结构发生变化,请提 issue。 65 | 66 | 67 | ## 更新记录 68 | 69 | ## 2021.2.23 70 | 71 | 更新到 http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/index.html 2020 最新数据 72 | 73 | ## 2019.4.17 74 | 75 | fix [#17](https://github.com/wecatch/china_regions/issues/17) 针对东莞市 中山市 儋州市三个不设区的市单独处理, 76 | 这三个市没有区,直接到镇 town,镇的上一级就是市,开发者可以根据自己的情况特殊处理,详见 `src/special_city.json`,SQL 数据包含在 town.sql 中 77 | 78 | ## 2019.4.9 79 | 80 | - fix [#16](https://github.com/wecatch/china_regions/issues/16) 81 | 82 | ## 2019.3.10 83 | 84 | - 更新数据生成的方式 85 | - 校验数据生成是否准确 `cat src/village.json | grep id | wc -l` == `wc -l mysql/village.sql` 86 | 87 | ## 2019.2.11 88 | 89 | - 更新数据抓取方式,使用 nodejs 抓取 90 | - 更新数据到最新的 2018 国标 91 | - 移除对 sqlite 以及 postgresql 的 92 | -------------------------------------------------------------------------------- /src/province.json: -------------------------------------------------------------------------------- 1 | [{"name":"北京市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/11.html"},{"name":"天津市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/12.html"},{"name":"河北省","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/13.html"},{"name":"山西省","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/14.html"},{"name":"内蒙古自治区","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/15.html"},{"name":"辽宁省","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/21.html"},{"name":"吉林省","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/22.html"},{"name":"黑龙江省","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/23.html"},{"name":"上海市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/31.html"},{"name":"江苏省","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/32.html"},{"name":"浙江省","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/33.html"},{"name":"安徽省","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/34.html"},{"name":"福建省","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/35.html"},{"name":"江西省","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/36.html"},{"name":"山东省","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/37.html"},{"name":"河南省","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/41.html"},{"name":"湖北省","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/42.html"},{"name":"湖南省","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/43.html"},{"name":"广东省","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/44.html"},{"name":"广西壮族自治区","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/45.html"},{"name":"海南省","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/46.html"},{"name":"重庆市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/50.html"},{"name":"四川省","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/51.html"},{"name":"贵州省","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/52.html"},{"name":"云南省","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/53.html"},{"name":"西藏自治区","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/54.html"},{"name":"陕西省","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/61.html"},{"name":"甘肃省","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/62.html"},{"name":"青海省","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/63.html"},{"name":"宁夏回族自治区","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/64.html"},{"name":"新疆维吾尔自治区","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/65.html"}] -------------------------------------------------------------------------------- /location-demo/app/components/region-show.js: -------------------------------------------------------------------------------- 1 | import { computed, observer, getWithDefault } from '@ember/object'; 2 | import Component from '@ember/component'; 3 | import { inject } from '@ember/service'; 4 | import EmberObject from '@ember/object'; 5 | 6 | export default Component.extend({ 7 | actions: { 8 | resetSearch(){ 9 | this.searchOptions.setProperties({ 10 | province_id: '', 11 | city_id: '', 12 | area_id: '', 13 | }); 14 | } 15 | }, 16 | region: inject(), 17 | provinceOptions: computed.alias('region.provinceOptions'), 18 | province: computed('searchOptions.province_id', { 19 | get(){ 20 | let id = getWithDefault(this, 'searchOptions.province_id', '') 21 | return this.get('region').getProvinceObject(id); 22 | } 23 | }), 24 | city: computed('searchOptions.city_id', { 25 | get(){ 26 | let id = getWithDefault(this, 'searchOptions.city_id', '') 27 | return this.get('region').getCityObject(id); 28 | } 29 | }), 30 | area: computed('searchOptions.area_id', { 31 | get(){ 32 | let id = getWithDefault(this, 'searchOptions.area_id', '') 33 | return this.get('region').getAreaObject(id); 34 | } 35 | }), 36 | cityOptions: null, 37 | areaOptions: null, 38 | provinceChange: observer('searchOptions.province_id', function() { 39 | let provinceId = this.get('searchOptions.province_id') 40 | this.set('cityOptions', this.get('region').getCity(provinceId)); 41 | this.set('areaOptions', []); 42 | this.get('searchOptions').setProperties({ 43 | city_id: '', 44 | area_id: '', 45 | }); 46 | }), 47 | cityChange: observer('searchOptions.city_id', function() { 48 | let cityId = this.get('searchOptions.city_id'); 49 | this.set('areaOptions', this.get('region').getArea(cityId)); 50 | this.get('searchOptions').setProperties({ 51 | area_id: '', 52 | }); 53 | }), 54 | initRegion(){ 55 | let provinceId = this.get('searchOptions.province_id') 56 | this.set('cityOptions', this.get('region').getCity(provinceId)); 57 | 58 | let cityId = this.get('searchOptions.city_id'); 59 | this.set('areaOptions', this.get('region').getArea(cityId)); 60 | }, 61 | init(){ 62 | this._super(...arguments); 63 | this.initRegion(); 64 | this.set('cityOptions', []); 65 | this.set('areaOptions', []); 66 | this.set('searchOptions', EmberObject.create({ 67 | province_id: '', 68 | city_id: '', 69 | area_id: '', 70 | tag: '', 71 | })); 72 | } 73 | }); 74 | -------------------------------------------------------------------------------- /mysql/province.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO province ('_id', 'name', 'province_id') VALUES ('1', '北京市', '110000000000'); 2 | INSERT INTO province ('_id', 'name', 'province_id') VALUES ('2', '天津市', '120000000000'); 3 | INSERT INTO province ('_id', 'name', 'province_id') VALUES ('3', '河北省', '130000000000'); 4 | INSERT INTO province ('_id', 'name', 'province_id') VALUES ('4', '山西省', '140000000000'); 5 | INSERT INTO province ('_id', 'name', 'province_id') VALUES ('5', '内蒙古自治区', '150000000000'); 6 | INSERT INTO province ('_id', 'name', 'province_id') VALUES ('6', '辽宁省', '210000000000'); 7 | INSERT INTO province ('_id', 'name', 'province_id') VALUES ('7', '吉林省', '220000000000'); 8 | INSERT INTO province ('_id', 'name', 'province_id') VALUES ('8', '黑龙江省', '230000000000'); 9 | INSERT INTO province ('_id', 'name', 'province_id') VALUES ('9', '上海市', '310000000000'); 10 | INSERT INTO province ('_id', 'name', 'province_id') VALUES ('10', '江苏省', '320000000000'); 11 | INSERT INTO province ('_id', 'name', 'province_id') VALUES ('11', '浙江省', '330000000000'); 12 | INSERT INTO province ('_id', 'name', 'province_id') VALUES ('12', '安徽省', '340000000000'); 13 | INSERT INTO province ('_id', 'name', 'province_id') VALUES ('13', '福建省', '350000000000'); 14 | INSERT INTO province ('_id', 'name', 'province_id') VALUES ('14', '江西省', '360000000000'); 15 | INSERT INTO province ('_id', 'name', 'province_id') VALUES ('15', '山东省', '370000000000'); 16 | INSERT INTO province ('_id', 'name', 'province_id') VALUES ('16', '河南省', '410000000000'); 17 | INSERT INTO province ('_id', 'name', 'province_id') VALUES ('17', '湖北省', '420000000000'); 18 | INSERT INTO province ('_id', 'name', 'province_id') VALUES ('18', '湖南省', '430000000000'); 19 | INSERT INTO province ('_id', 'name', 'province_id') VALUES ('19', '广东省', '440000000000'); 20 | INSERT INTO province ('_id', 'name', 'province_id') VALUES ('20', '广西壮族自治区', '450000000000'); 21 | INSERT INTO province ('_id', 'name', 'province_id') VALUES ('21', '海南省', '460000000000'); 22 | INSERT INTO province ('_id', 'name', 'province_id') VALUES ('22', '重庆市', '500000000000'); 23 | INSERT INTO province ('_id', 'name', 'province_id') VALUES ('23', '四川省', '510000000000'); 24 | INSERT INTO province ('_id', 'name', 'province_id') VALUES ('24', '贵州省', '520000000000'); 25 | INSERT INTO province ('_id', 'name', 'province_id') VALUES ('25', '云南省', '530000000000'); 26 | INSERT INTO province ('_id', 'name', 'province_id') VALUES ('26', '西藏自治区', '540000000000'); 27 | INSERT INTO province ('_id', 'name', 'province_id') VALUES ('27', '陕西省', '610000000000'); 28 | INSERT INTO province ('_id', 'name', 'province_id') VALUES ('28', '甘肃省', '620000000000'); 29 | INSERT INTO province ('_id', 'name', 'province_id') VALUES ('29', '青海省', '630000000000'); 30 | INSERT INTO province ('_id', 'name', 'province_id') VALUES ('30', '宁夏回族自治区', '640000000000'); 31 | INSERT INTO province ('_id', 'name', 'province_id') VALUES ('31', '新疆维吾尔自治区', '650000000000'); 32 | -------------------------------------------------------------------------------- /json/province_object.json: -------------------------------------------------------------------------------- 1 | { 2 | "110000000000": { 3 | "name": "北京市", 4 | "id": "110000000000" 5 | }, 6 | "120000000000": { 7 | "name": "天津市", 8 | "id": "120000000000" 9 | }, 10 | "130000000000": { 11 | "name": "河北省", 12 | "id": "130000000000" 13 | }, 14 | "140000000000": { 15 | "name": "山西省", 16 | "id": "140000000000" 17 | }, 18 | "150000000000": { 19 | "name": "内蒙古自治区", 20 | "id": "150000000000" 21 | }, 22 | "210000000000": { 23 | "name": "辽宁省", 24 | "id": "210000000000" 25 | }, 26 | "220000000000": { 27 | "name": "吉林省", 28 | "id": "220000000000" 29 | }, 30 | "230000000000": { 31 | "name": "黑龙江省", 32 | "id": "230000000000" 33 | }, 34 | "310000000000": { 35 | "name": "上海市", 36 | "id": "310000000000" 37 | }, 38 | "320000000000": { 39 | "name": "江苏省", 40 | "id": "320000000000" 41 | }, 42 | "330000000000": { 43 | "name": "浙江省", 44 | "id": "330000000000" 45 | }, 46 | "340000000000": { 47 | "name": "安徽省", 48 | "id": "340000000000" 49 | }, 50 | "350000000000": { 51 | "name": "福建省", 52 | "id": "350000000000" 53 | }, 54 | "360000000000": { 55 | "name": "江西省", 56 | "id": "360000000000" 57 | }, 58 | "370000000000": { 59 | "name": "山东省", 60 | "id": "370000000000" 61 | }, 62 | "410000000000": { 63 | "name": "河南省", 64 | "id": "410000000000" 65 | }, 66 | "420000000000": { 67 | "name": "湖北省", 68 | "id": "420000000000" 69 | }, 70 | "430000000000": { 71 | "name": "湖南省", 72 | "id": "430000000000" 73 | }, 74 | "440000000000": { 75 | "name": "广东省", 76 | "id": "440000000000" 77 | }, 78 | "450000000000": { 79 | "name": "广西壮族自治区", 80 | "id": "450000000000" 81 | }, 82 | "460000000000": { 83 | "name": "海南省", 84 | "id": "460000000000" 85 | }, 86 | "500000000000": { 87 | "name": "重庆市", 88 | "id": "500000000000" 89 | }, 90 | "510000000000": { 91 | "name": "四川省", 92 | "id": "510000000000" 93 | }, 94 | "520000000000": { 95 | "name": "贵州省", 96 | "id": "520000000000" 97 | }, 98 | "530000000000": { 99 | "name": "云南省", 100 | "id": "530000000000" 101 | }, 102 | "540000000000": { 103 | "name": "西藏自治区", 104 | "id": "540000000000" 105 | }, 106 | "610000000000": { 107 | "name": "陕西省", 108 | "id": "610000000000" 109 | }, 110 | "620000000000": { 111 | "name": "甘肃省", 112 | "id": "620000000000" 113 | }, 114 | "630000000000": { 115 | "name": "青海省", 116 | "id": "630000000000" 117 | }, 118 | "640000000000": { 119 | "name": "宁夏回族自治区", 120 | "id": "640000000000" 121 | }, 122 | "650000000000": { 123 | "name": "新疆维吾尔自治区", 124 | "id": "650000000000" 125 | } 126 | } 127 | -------------------------------------------------------------------------------- /js/province_object.js: -------------------------------------------------------------------------------- 1 | let province_object = { 2 | "110000000000": { 3 | "name": "北京市", 4 | "id": "110000000000" 5 | }, 6 | "120000000000": { 7 | "name": "天津市", 8 | "id": "120000000000" 9 | }, 10 | "130000000000": { 11 | "name": "河北省", 12 | "id": "130000000000" 13 | }, 14 | "140000000000": { 15 | "name": "山西省", 16 | "id": "140000000000" 17 | }, 18 | "150000000000": { 19 | "name": "内蒙古自治区", 20 | "id": "150000000000" 21 | }, 22 | "210000000000": { 23 | "name": "辽宁省", 24 | "id": "210000000000" 25 | }, 26 | "220000000000": { 27 | "name": "吉林省", 28 | "id": "220000000000" 29 | }, 30 | "230000000000": { 31 | "name": "黑龙江省", 32 | "id": "230000000000" 33 | }, 34 | "310000000000": { 35 | "name": "上海市", 36 | "id": "310000000000" 37 | }, 38 | "320000000000": { 39 | "name": "江苏省", 40 | "id": "320000000000" 41 | }, 42 | "330000000000": { 43 | "name": "浙江省", 44 | "id": "330000000000" 45 | }, 46 | "340000000000": { 47 | "name": "安徽省", 48 | "id": "340000000000" 49 | }, 50 | "350000000000": { 51 | "name": "福建省", 52 | "id": "350000000000" 53 | }, 54 | "360000000000": { 55 | "name": "江西省", 56 | "id": "360000000000" 57 | }, 58 | "370000000000": { 59 | "name": "山东省", 60 | "id": "370000000000" 61 | }, 62 | "410000000000": { 63 | "name": "河南省", 64 | "id": "410000000000" 65 | }, 66 | "420000000000": { 67 | "name": "湖北省", 68 | "id": "420000000000" 69 | }, 70 | "430000000000": { 71 | "name": "湖南省", 72 | "id": "430000000000" 73 | }, 74 | "440000000000": { 75 | "name": "广东省", 76 | "id": "440000000000" 77 | }, 78 | "450000000000": { 79 | "name": "广西壮族自治区", 80 | "id": "450000000000" 81 | }, 82 | "460000000000": { 83 | "name": "海南省", 84 | "id": "460000000000" 85 | }, 86 | "500000000000": { 87 | "name": "重庆市", 88 | "id": "500000000000" 89 | }, 90 | "510000000000": { 91 | "name": "四川省", 92 | "id": "510000000000" 93 | }, 94 | "520000000000": { 95 | "name": "贵州省", 96 | "id": "520000000000" 97 | }, 98 | "530000000000": { 99 | "name": "云南省", 100 | "id": "530000000000" 101 | }, 102 | "540000000000": { 103 | "name": "西藏自治区", 104 | "id": "540000000000" 105 | }, 106 | "610000000000": { 107 | "name": "陕西省", 108 | "id": "610000000000" 109 | }, 110 | "620000000000": { 111 | "name": "甘肃省", 112 | "id": "620000000000" 113 | }, 114 | "630000000000": { 115 | "name": "青海省", 116 | "id": "630000000000" 117 | }, 118 | "640000000000": { 119 | "name": "宁夏回族自治区", 120 | "id": "640000000000" 121 | }, 122 | "650000000000": { 123 | "name": "新疆维吾尔自治区", 124 | "id": "650000000000" 125 | } 126 | } 127 | 128 | export {province_object} -------------------------------------------------------------------------------- /location-demo/app/regions/province_object.js: -------------------------------------------------------------------------------- 1 | let province_object = { 2 | "110000000000": { 3 | "name": "北京市", 4 | "id": "110000000000" 5 | }, 6 | "120000000000": { 7 | "name": "天津市", 8 | "id": "120000000000" 9 | }, 10 | "130000000000": { 11 | "name": "河北省", 12 | "id": "130000000000" 13 | }, 14 | "140000000000": { 15 | "name": "山西省", 16 | "id": "140000000000" 17 | }, 18 | "150000000000": { 19 | "name": "内蒙古自治区", 20 | "id": "150000000000" 21 | }, 22 | "210000000000": { 23 | "name": "辽宁省", 24 | "id": "210000000000" 25 | }, 26 | "220000000000": { 27 | "name": "吉林省", 28 | "id": "220000000000" 29 | }, 30 | "230000000000": { 31 | "name": "黑龙江省", 32 | "id": "230000000000" 33 | }, 34 | "310000000000": { 35 | "name": "上海市", 36 | "id": "310000000000" 37 | }, 38 | "320000000000": { 39 | "name": "江苏省", 40 | "id": "320000000000" 41 | }, 42 | "330000000000": { 43 | "name": "浙江省", 44 | "id": "330000000000" 45 | }, 46 | "340000000000": { 47 | "name": "安徽省", 48 | "id": "340000000000" 49 | }, 50 | "350000000000": { 51 | "name": "福建省", 52 | "id": "350000000000" 53 | }, 54 | "360000000000": { 55 | "name": "江西省", 56 | "id": "360000000000" 57 | }, 58 | "370000000000": { 59 | "name": "山东省", 60 | "id": "370000000000" 61 | }, 62 | "410000000000": { 63 | "name": "河南省", 64 | "id": "410000000000" 65 | }, 66 | "420000000000": { 67 | "name": "湖北省", 68 | "id": "420000000000" 69 | }, 70 | "430000000000": { 71 | "name": "湖南省", 72 | "id": "430000000000" 73 | }, 74 | "440000000000": { 75 | "name": "广东省", 76 | "id": "440000000000" 77 | }, 78 | "450000000000": { 79 | "name": "广西壮族自治区", 80 | "id": "450000000000" 81 | }, 82 | "460000000000": { 83 | "name": "海南省", 84 | "id": "460000000000" 85 | }, 86 | "500000000000": { 87 | "name": "重庆市", 88 | "id": "500000000000" 89 | }, 90 | "510000000000": { 91 | "name": "四川省", 92 | "id": "510000000000" 93 | }, 94 | "520000000000": { 95 | "name": "贵州省", 96 | "id": "520000000000" 97 | }, 98 | "530000000000": { 99 | "name": "云南省", 100 | "id": "530000000000" 101 | }, 102 | "540000000000": { 103 | "name": "西藏自治区", 104 | "id": "540000000000" 105 | }, 106 | "610000000000": { 107 | "name": "陕西省", 108 | "id": "610000000000" 109 | }, 110 | "620000000000": { 111 | "name": "甘肃省", 112 | "id": "620000000000" 113 | }, 114 | "630000000000": { 115 | "name": "青海省", 116 | "id": "630000000000" 117 | }, 118 | "640000000000": { 119 | "name": "宁夏回族自治区", 120 | "id": "640000000000" 121 | }, 122 | "650000000000": { 123 | "name": "新疆维吾尔自治区", 124 | "id": "650000000000" 125 | } 126 | } 127 | 128 | export {province_object} -------------------------------------------------------------------------------- /makedata.py: -------------------------------------------------------------------------------- 1 | # -*- coding:utf-8 -*- 2 | import json 3 | import codecs 4 | from collections import OrderedDict 5 | 6 | 7 | def make_data(): 8 | source_file_list = [ 9 | 'village', 'village_object', 'town', 'town_object', 'county', 'county_object', 'city', 'city_object', 'province', 'province_object'] 10 | for k in list(reversed(source_file_list))[0:-2]: 11 | data = codecs.open('json/%s.json' % k, 'r', 'utf-8').read() 12 | js_data = 'let %s = ' % k + data + '\nexport {%s} ' % k 13 | out_js = codecs.open('js/%s.js' % k, 'w', 'utf-8') 14 | out_js.write(js_data) 15 | json_data = json.loads(data) 16 | mysql_data_list = [] 17 | 18 | if k == 'province': 19 | for index, i in enumerate(json_data): 20 | mysql_data = "INSERT INTO province ('_id', 'name', 'province_id') VALUES ('%s', '%s', '%s');\n" % (index + 1, i['name'], i['id']) # noqa 21 | mysql_data_list.append(mysql_data) 22 | 23 | if k == 'city': 24 | index = 0 25 | for province_id in sorted(json_data.keys()): 26 | for city in json_data[province_id]: 27 | index += 1 28 | mysql_data = "INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('%s', '%s', '%s', '%s');\n" % (index, city['name'], city['id'], province_id) # noqa 29 | mysql_data_list.append(mysql_data) 30 | 31 | if k == 'county': 32 | index = 0 33 | for city_id in sorted(json_data.keys()): 34 | for county in json_data[city_id]: 35 | index += 1 36 | mysql_data = "INSERT INTO county ('_id', 'name', 'county_id', 'city_id') VALUES ('%s', '%s', '%s', '%s');\n" % (index, county['name'], county['id'], city_id) # noqa 37 | mysql_data_list.append(mysql_data) 38 | 39 | if k == 'town': 40 | index = 0 41 | for county_id in sorted(json_data.keys()): 42 | for town in json_data[county_id]: 43 | index += 1 44 | mysql_data = "INSERT INTO town ('_id', 'name', 'town_id', 'county_id') VALUES ('%s', '%s', '%s', '%s');\n" % (index, town['name'], town['id'], county_id) # noqa 45 | mysql_data_list.append(mysql_data) 46 | 47 | if k == 'village': 48 | index = 0 49 | for town_id in sorted(json_data.keys()): 50 | for village in json_data[town_id]: 51 | index += 1 52 | mysql_data = "INSERT INTO village ('_id', 'name', 'village_id', 'town_id') VALUES ('%s', '%s', '%s', '%s');\n" % (index, village['name'], village['id'], town_id) # noqa 53 | mysql_data_list.append(mysql_data) 54 | 55 | if k in ['province', 'city', 'county', 'town', 'village']: 56 | out_mysql = codecs.open('mysql/%s.sql' % k, 'w', 'utf-8') 57 | index = 0 58 | start = 0 59 | while start < len(mysql_data_list): 60 | end = start + 1000 61 | out_mysql.write(''.join(mysql_data_list[start:end])) 62 | start = end 63 | 64 | out_mysql.close() 65 | 66 | 67 | def pull_data(): 68 | province_object_json = json.loads( 69 | codecs.open('json/province_object.json', 'r', 'utf-8').read()) 70 | city_json = json.loads(codecs.open('src/city.json', 'r', 'utf-8').read()) 71 | county_json = json.loads(codecs.open( 72 | 'src/county.json', 'r', 'utf-8').read()) 73 | town_json = json.loads(codecs.open('src/town.json', 'r', 'utf-8').read()) 74 | village_json = json.loads(codecs.open( 75 | 'src/village.json', 'r', 'utf-8').read()) 76 | special_city_json = json.loads(codecs.open( 77 | 'src/special_city.json', 'r', 'utf-8').read()) 78 | city_object_d = OrderedDict() 79 | city_d = OrderedDict() 80 | for c in city_json: 81 | parent_id = c['id'][0:2] + '0000000000' 82 | obj = { 83 | "province": province_object_json[parent_id]['name'], 84 | "name": c['name'], 85 | "id": c['id'] 86 | } 87 | city_object_d[c['id']] = obj 88 | city_d.setdefault(parent_id, []).append(obj) 89 | 90 | out_city_object = codecs.open('json/city_object.json', 'w', 'utf-8') 91 | out_city = codecs.open('json/city.json', 'w', 'utf-8') 92 | out_city_object.write(json.dumps( 93 | city_object_d, ensure_ascii=False, indent=4)) 94 | out_city.write(json.dumps(city_d, ensure_ascii=False, indent=4)) 95 | 96 | county_object_d = OrderedDict() 97 | county_d = OrderedDict() 98 | special_city_object = OrderedDict() 99 | for sc in special_city_json: 100 | special_city_object[sc["id"]] = sc 101 | 102 | for c in county_json: 103 | parent_id = c['id'][0:4] + '00000000' 104 | obj = { 105 | "city": city_object_d[parent_id]['name'], 106 | "name": c['name'], 107 | "id": c['id'] 108 | } 109 | county_object_d[c['id']] = obj 110 | county_d.setdefault(parent_id, []).append(obj) 111 | 112 | out_county_object = codecs.open('json/county_object.json', 'w', 'utf-8') 113 | out_county = codecs.open('json/county.json', 'w', 'utf-8') 114 | out_county_object.write(json.dumps( 115 | county_object_d, ensure_ascii=False, indent=4)) 116 | out_county.write(json.dumps(county_d, ensure_ascii=False, indent=4)) 117 | 118 | town_object_d = OrderedDict() 119 | town_d = OrderedDict() 120 | 121 | for c in town_json: 122 | parent_id = c['id'][0:6] + '000000' 123 | # 特殊处理不带区的市 124 | if parent_id in special_city_object: 125 | obj = { 126 | "city": city_object_d[parent_id]['name'], 127 | "name": c['name'], 128 | "id": c['id'] 129 | } 130 | else: 131 | obj = { 132 | "city": county_object_d[parent_id]['name'], 133 | "name": c['name'], 134 | "id": c['id'] 135 | } 136 | town_object_d[c['id']] = obj 137 | town_d.setdefault(parent_id, []).append(obj) 138 | 139 | out_town_object = codecs.open('json/town_object.json', 'w', 'utf-8') 140 | out_town = codecs.open('json/town.json', 'w', 'utf-8') 141 | out_town_object.write(json.dumps( 142 | town_object_d, ensure_ascii=False, indent=4)) 143 | out_town.write(json.dumps(town_d, ensure_ascii=False, indent=4)) 144 | 145 | # village_object_d = OrderedDict() 146 | # village_d = OrderedDict() 147 | 148 | # for c in village_json: 149 | # parent_id = c['id'][0:9] + '000' 150 | # obj = { 151 | # "city": town_object_d[parent_id]['name'], 152 | # "name": c['name'], 153 | # "id": c['id'] 154 | # } 155 | # village_object_d[c['id']] = obj 156 | # village_d.setdefault(parent_id, []).append(obj) 157 | 158 | # out_village_object = codecs.open('json/village_object.json', 'w', 'utf-8') 159 | # out_village = codecs.open('json/village.json', 'w', 'utf-8') 160 | # out_village_object.write(json.dumps( 161 | # village_object_d, ensure_ascii=False, indent=4)) 162 | # out_village.write(json.dumps(village_d, ensure_ascii=False, indent=4)) 163 | 164 | 165 | def main(): 166 | pull_data() 167 | make_data() 168 | 169 | 170 | if __name__ == '__main__': 171 | main() 172 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright {yyyy} {name of copyright owner} 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | 203 | -------------------------------------------------------------------------------- /main.js: -------------------------------------------------------------------------------- 1 | const fs = require("fs"); 2 | const iconv = require('iconv-lite'); 3 | const jsdom = require("jsdom"); 4 | const path = require("path"); 5 | const Promise = require("bluebird"); 6 | const log = require('tracer').console(); 7 | const request = Promise.promisifyAll(require("request"), {multiArgs: true}); 8 | const requestSync = require("request"); 9 | const sleep = require('system-sleep'); 10 | 11 | 12 | 13 | const host = "http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/"; 14 | //这个 ip 是通过 dns 工具直接解析出来的,因为大量爬取需要进行多次 dns 解析,时间长了 nodejs 会报 dns 解析错误 15 | //应该是有缓存的,但是还是报 dns 解析有问题,这个 ip 可能会变,在使用时可以实时解析一下统计局的网站域名,如果不使用 ip 16 | //则把 IP 内容换成域名即可 17 | const IP = 'www.stats.gov.cn' 18 | // const IP = '111.206.216.105' 19 | 20 | 21 | function absolutePath(url) { 22 | let basename = path.basename(url); 23 | url = url.replace(basename, ""); 24 | return url; 25 | } 26 | 27 | function joinUrl(url1, url2) { 28 | if (url2.startsWith('/')) { 29 | url2 = url2.slice(1, url2.length) 30 | } 31 | if (url1.endsWith('/')) { 32 | return url1 + url2; 33 | } else { 34 | return url1 + '/' + url2; 35 | } 36 | } 37 | 38 | 39 | function renderDom(html) { 40 | const { 41 | JSDOM 42 | } = jsdom; 43 | const dom = new JSDOM(html); 44 | const $ = (require('jquery'))(dom.window); 45 | return $; 46 | } 47 | 48 | 49 | function newRequestPromise(url) { 50 | url = url.replace('www.stats.gov.cn', IP); 51 | log.debug('request == >', url); 52 | return request.getAsync({ 53 | url: url, 54 | encoding: null, 55 | timeout: 50000 56 | }); 57 | // promise resolve only accept value 58 | // return new Promise(function(resolve, reject) { 59 | // request({ 60 | // }, function(error, response, body) { 61 | // log.debug(response.statusCode); 62 | // log.debug(response.body); 63 | // if (response.statusCode == 200) { 64 | // resolve([response, response.body]); 65 | // } else { 66 | // //some error handling 67 | // reject(error) 68 | // } 69 | // }); 70 | // }, ); 71 | } 72 | 73 | 74 | const ProvincePath = 'src/province.json'; 75 | const CityPath = 'src/city.json'; 76 | const CountyPath = 'src/county.json'; 77 | const TownPath = 'src/town.json'; 78 | const VillagePath = 'src/village.json'; 79 | const VillagePathBackup = 'src/village_backup.json'; 80 | const SpecialCityPath = 'src/special_city.json'; 81 | 82 | const fileExists = {} 83 | fileExists.provincePath = fs.existsSync(ProvincePath); 84 | fileExists.cityPath = fs.existsSync(CityPath); 85 | fileExists.countyPath = fs.existsSync(CountyPath); 86 | fileExists.townPath = fs.existsSync(TownPath); 87 | fileExists.villagePath = fs.existsSync(VillagePath); 88 | 89 | 90 | function requestProvince() { 91 | // request provice 92 | if (fileExists.provincePath){ 93 | return new Promise(function(resolve, reject){ 94 | resolve(JSON.parse(fs.readFileSync(ProvincePath))); 95 | }); 96 | }else { 97 | return newRequestPromise(host).spread(function(response, body) { 98 | log.info("正在请求 => 省份") 99 | return parseProvice(iconv.decode(body, 'gb2312')); 100 | }) 101 | } 102 | 103 | } 104 | 105 | function main(){ 106 | //从省份开始爬取 有统计局的网站并发能力有限,使用 promise.All 爬完 county 级别的信息时服务器就连接不上了 107 | //代码里预制了从已经爬取到的文件中获取连接继续爬的能力 108 | //由于从 county 开始信息量已经很大了,一般服务器会直接报错 可以使用 pullTownDataSync 从本地文件读取 county 信息继续爬 109 | requestProvince().then(function(proviceResult) { 110 | // request city 111 | fs.writeFileSync(ProvincePath, JSON.stringify(proviceResult)); 112 | if (fileExists.cityPath) { 113 | return JSON.parse(fs.readFileSync(CityPath)) 114 | } else { 115 | log.info("正在请求 => 城市") 116 | return Promise.all(proviceResult.map(function(item) { 117 | return newRequestPromise(item.url); 118 | })); 119 | } 120 | }).then(function(respResults) { 121 | let urls = []; 122 | if (!fileExists.cityPath) { 123 | respResults.forEach(function(item, index) { 124 | urls = urls.concat(parseCity(iconv.decode(item[1], 'gb2312'), host)); 125 | }) 126 | fs.writeFileSync(CityPath, JSON.stringify(urls)); 127 | } else { 128 | //已经存在表示已经爬取到了 city 信息 129 | urls = respResults; 130 | } 131 | 132 | sleep(5000); 133 | 134 | // 已经存在 county 信息 135 | if (fileExists.countyPath) { 136 | return JSON.parse(fs.readFileSync(CountyPath)); 137 | } else { 138 | // request county 139 | log.info("正在请求 => 区县") 140 | return Promise.all(urls.filter(x => x.url.length > 0).map(function(item) { 141 | return newRequestPromise(item.url); 142 | })) 143 | } 144 | 145 | }).then(function(respResults) { 146 | let urls = []; 147 | if (!fileExists.countyPath) { 148 | respResults.forEach(function(item, index) { 149 | urls = urls.concat(parseCounty(iconv.decode(item[1], 'gb2312'), absolutePath(item[0].request.href))); 150 | }); 151 | fs.writeFileSync(CountyPath, JSON.stringify(urls)); 152 | } else { 153 | //已经存在表示已经爬取到了 county 信息 154 | urls = respResults; 155 | } 156 | 157 | sleep(5000); 158 | 159 | // 已经存在 town 信息 160 | if (fileExists.townPath) { 161 | return JSON.parse(fs.readFileSync(TownPath)); 162 | } else { 163 | // request town 164 | log.info("正在请求 => 乡镇") 165 | return Promise.all(urls.filter(x => x.url.length > 0).map(function(item) { 166 | return newRequestPromise(item.url); 167 | })) 168 | } 169 | }).then(function(respResults) { 170 | let urls = []; 171 | if (!fileExists.townPath) { 172 | respResults.forEach(function(item, index) { 173 | urls = urls.concat(parseTown(iconv.decode(item[1], 'gb2312'), absolutePath(item[0].request.href))); 174 | }); 175 | 176 | fs.writeFileSync(TownPath, JSON.stringify(urls)); 177 | } else { 178 | urls = respResults; 179 | } 180 | 181 | sleep(5000); 182 | 183 | if (fileExists.villagePath) { 184 | return JSON.parse(fs.readFileSync(VillagePath)) 185 | } else { 186 | // request village 187 | log.info("正在请求 => 村 街道 居委会") 188 | return Promise.all(urls.filter(x => x.url.length > 0).map(function(item) { 189 | return newRequestPromise(item.url); 190 | })) 191 | } 192 | }).then(function(respResults) { 193 | let urls = []; 194 | if (!fileExists.villagePath) { 195 | respResults.forEach(function(item, index) { 196 | urls = urls.concat(parseVillage(iconv.decode(item[1], 'gb2312'))); 197 | }); 198 | fs.writeFileSync(VillagePath, JSON.stringify(urls)); 199 | } 200 | 201 | }).catch(function(error) { 202 | log.debug("error while fetching url ==> ", error); 203 | }); 204 | } 205 | 206 | 207 | function parseProvice(html) { 208 | let $ = renderDom(html) 209 | let result = []; 210 | $(".provincetr a").each(function(index, element) { 211 | result.push({ 212 | name: $(element).text(), 213 | url: joinUrl(host, $(element).attr("href")), 214 | }) 215 | }); 216 | 217 | return result; 218 | } 219 | 220 | // citytr 221 | function parseCity(html, parentUrl) { 222 | let $ = renderDom(html); 223 | let result = []; 224 | $("tr.citytr").each(function(index, element) { 225 | let td0 = null, 226 | td1 = null, 227 | url = ""; 228 | if ($(this).find("a").length == 0) { 229 | td0 = $(this).find("td").first(); 230 | td1 = $(this).find("td").last(); 231 | } else { 232 | td0 = $(this).find("a").first(); 233 | td1 = $(this).find("a").last(); 234 | } 235 | let id = td0.text(); 236 | let name = td1.text(); 237 | if (td0.attr("href")) { 238 | url = joinUrl(parentUrl, td0.attr("href")); 239 | } 240 | result.push({ 241 | id: id, 242 | name: name, 243 | url: url 244 | }); 245 | }); 246 | 247 | return result; 248 | 249 | } 250 | 251 | // countytr 252 | function parseCounty(html, parentUrl) { 253 | let $ = renderDom(html); 254 | let result = []; 255 | $("tr.countytr").each(function(index, element) { 256 | let td0 = null, 257 | td1 = null, 258 | url = ""; 259 | if ($(this).find("a").length == 0) { 260 | td0 = $(this).find("td").first(); 261 | td1 = $(this).find("td").last(); 262 | } else { 263 | td0 = $(this).find("a").first(); 264 | td1 = $(this).find("a").last(); 265 | } 266 | let id = td0.text(); 267 | let name = td1.text(); 268 | if (td0.attr("href")) { 269 | url = joinUrl(parentUrl, td0.attr("href")); 270 | } 271 | result.push({ 272 | id: id, 273 | name: name, 274 | url: url 275 | }); 276 | }); 277 | 278 | 279 | return result; 280 | 281 | } 282 | 283 | 284 | // towntr 285 | function parseTown(html, parentUrl) { 286 | let $ = renderDom(html); 287 | let result = []; 288 | $("tr.towntr").each(function(index, element) { 289 | let td0 = null, 290 | td1 = null, 291 | url = ""; 292 | if ($(this).find("a").length == 0) { 293 | td0 = $(this).find("td").first(); 294 | td1 = $(this).find("td").last(); 295 | } else { 296 | td0 = $(this).find("a").first(); 297 | td1 = $(this).find("a").last(); 298 | } 299 | let id = td0.text(); 300 | let name = td1.text(); 301 | if (td0.attr("href")) { 302 | url = joinUrl(parentUrl, td0.attr("href")); 303 | } 304 | result.push({ 305 | id: id, 306 | name: name, 307 | url: url 308 | }); 309 | }); 310 | 311 | 312 | return result; 313 | } 314 | 315 | // villagetr 316 | function parseVillage(html) { 317 | let $ = renderDom(html); 318 | let result = []; 319 | $("tr.villagetr").each(function(index, element) { 320 | let td0 = $(this).find("td").first(); 321 | let td1 = $(this).find("td").last(); 322 | let id = td0.text(); 323 | let name = td1.text(); 324 | result.push({ 325 | id: id, 326 | name: name, 327 | }); 328 | }); 329 | 330 | return result; 331 | } 332 | 333 | /* 334 | args: 335 | cityPath 336 | offset 读取city的偏移 337 | */ 338 | function pullCountyDataSync(cityPath, offset) { 339 | offset = offset || 0 340 | let data = fs.readFileSync(cityPath); 341 | let jsonData = JSON.parse(data); 342 | jsonData.slice(offset).forEach(function(element, index) { 343 | let urls = []; 344 | let url = element.url.replace('www.stats.gov.cn', IP); 345 | log.debug("正在请求 => " + element.name + " => "+ element.url); 346 | if (url){ 347 | requestSync({ 348 | url: url, 349 | encoding: null 350 | }, function(error, response, body) { 351 | //空的文件内容必须是 [] 352 | //特殊处理东莞市 353 | if(["441900000000", "442000000000", "460400000000"].includes(element.id)){ 354 | if(fileExists.townPath){ 355 | urls = JSON.parse(fs.readFileSync(TownPath)); 356 | } 357 | urls = urls.concat(parseTown(iconv.decode(body, 'gb2312'), absolutePath(element.url))); 358 | fs.writeFileSync(TownPath, JSON.stringify(urls)); 359 | } else { 360 | if(fileExists.countyPath) { 361 | urls = JSON.parse(fs.readFileSync(CountyPath)); 362 | } 363 | urls = urls.concat(parseCounty(iconv.decode(body, 'gb2312'), absolutePath(element.url))); 364 | fs.writeFileSync(CountyPath, JSON.stringify(urls)); 365 | } 366 | log.debug('foreach ==> ', offset + index); 367 | }); 368 | sleep(1000); 369 | } 370 | }); 371 | } 372 | 373 | 374 | 375 | /* 376 | args: 377 | cityPath 378 | offset 读取county的偏移 379 | */ 380 | function pullTownDataSync(countyPath, offset) { 381 | offset = offset || 0 382 | let data = fs.readFileSync(countyPath); 383 | let jsonData = JSON.parse(data); 384 | jsonData.slice(offset).forEach(function(element, index) { 385 | let urls = []; 386 | let url = element.url.replace('www.stats.gov.cn', IP); 387 | log.debug("正在请求 => " + element.name + " => "+ element.url); 388 | if (url){ 389 | requestSync({ 390 | url: url, 391 | encoding: null 392 | }, function(error, response, body) { 393 | //空的文件内容必须是 [] 394 | if(fileExists.townPath){ 395 | urls = JSON.parse(fs.readFileSync(TownPath)); 396 | } 397 | urls = urls.concat(parseTown(iconv.decode(body, 'gb2312'), absolutePath(element.url))); 398 | fs.writeFileSync(TownPath, JSON.stringify(urls)); 399 | log.debug('foreach ==> ', offset + index); 400 | }); 401 | sleep(1000); 402 | } 403 | }); 404 | } 405 | 406 | //由于数据量很大,统计局的服务器在接受大量连接时会莫名 hang 住,所以通过输出 index,不断计算偏移量,方便下一次计算 407 | //第一次从 0 开始,假如输出 index 是 3000,则下一次爬取时偏移量应该是 3001,可以通过 sleep 适当控制爬取的速度,sleep 是直接让 nodejs event loop 停住 408 | function pullVillageDataSync(townPath, offset) { 409 | offset = offset || 0 410 | let data = fs.readFileSync(townPath); 411 | let jsonData = JSON.parse(data); 412 | // log.debug(jsonData.slice(offset)) 413 | jsonData.slice(offset).forEach(function(element, index) { 414 | // 该异常用于矫正偏移量的正确性 415 | // log.debug(element) 416 | // throw Error("offset error"); 417 | fs.copyFileSync(VillagePath, VillagePathBackup) 418 | let urls = []; 419 | // let url = element.url.replace('www.stats.gov.cn', IP); 420 | let url = element.url; 421 | log.debug("正在请求 => " + element.name + " => "+ element.url); 422 | if (url){ 423 | requestSync({ 424 | url: url, 425 | encoding: null 426 | }, function(error, response, body) { 427 | //空的文件内容必须是 [] 428 | if(fileExists.villagePath){ 429 | urls = JSON.parse(fs.readFileSync(VillagePath)); 430 | } 431 | urls = urls.concat(parseVillage(iconv.decode(body, 'gb2312'))); 432 | fs.writeFileSync(VillagePath, JSON.stringify(urls)); 433 | log.debug('foreach ==> ', offset + index); 434 | }); 435 | sleep(5000); 436 | } 437 | }); 438 | } 439 | 440 | 441 | // main(); 442 | // pullCountyDataSync(CityPath, 0); 443 | // pullTownDataSync(CountyPath, 0); 444 | // pullVillageDataSync(TownPath, 43302); //43302 -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | abab@^2.0.0: 6 | version "2.0.0" 7 | resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz#aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f" 8 | 9 | acorn-globals@^4.3.0: 10 | version "4.3.0" 11 | resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.0.tgz#e3b6f8da3c1552a95ae627571f7dd6923bb54103" 12 | dependencies: 13 | acorn "^6.0.1" 14 | acorn-walk "^6.0.1" 15 | 16 | acorn-walk@^6.0.1: 17 | version "6.1.1" 18 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913" 19 | 20 | acorn@^6.0.1, acorn@^6.0.4: 21 | version "6.4.2" 22 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" 23 | 24 | ajv@^6.5.5: 25 | version "6.8.1" 26 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.8.1.tgz#0890b93742985ebf8973cd365c5b23920ce3cb20" 27 | dependencies: 28 | fast-deep-equal "^2.0.1" 29 | fast-json-stable-stringify "^2.0.0" 30 | json-schema-traverse "^0.4.1" 31 | uri-js "^4.2.2" 32 | 33 | array-equal@^1.0.0: 34 | version "1.0.0" 35 | resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" 36 | 37 | asn1@~0.2.3: 38 | version "0.2.4" 39 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" 40 | dependencies: 41 | safer-buffer "~2.1.0" 42 | 43 | assert-plus@1.0.0, assert-plus@^1.0.0: 44 | version "1.0.0" 45 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 46 | 47 | async-limiter@~1.0.0: 48 | version "1.0.0" 49 | resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" 50 | 51 | async@^2.6.1: 52 | version "2.6.1" 53 | resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" 54 | dependencies: 55 | lodash "^4.17.10" 56 | 57 | asynckit@^0.4.0: 58 | version "0.4.0" 59 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 60 | 61 | aws-sign2@~0.7.0: 62 | version "0.7.0" 63 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" 64 | 65 | aws4@^1.8.0: 66 | version "1.8.0" 67 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" 68 | 69 | bcrypt-pbkdf@^1.0.0: 70 | version "1.0.2" 71 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" 72 | dependencies: 73 | tweetnacl "^0.14.3" 74 | 75 | bindings@~1.2.1: 76 | version "1.2.1" 77 | resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11" 78 | 79 | bluebird@^3.5.0, bluebird@^3.5.3: 80 | version "3.5.3" 81 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" 82 | 83 | browser-process-hrtime@^0.1.2: 84 | version "0.1.3" 85 | resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4" 86 | 87 | caseless@~0.12.0: 88 | version "0.12.0" 89 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 90 | 91 | colors@1.3.3: 92 | version "1.3.3" 93 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" 94 | 95 | combined-stream@^1.0.6, combined-stream@~1.0.6: 96 | version "1.0.7" 97 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" 98 | dependencies: 99 | delayed-stream "~1.0.0" 100 | 101 | core-util-is@1.0.2: 102 | version "1.0.2" 103 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 104 | 105 | cssom@0.3.x, cssom@^0.3.4: 106 | version "0.3.4" 107 | resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz#8cd52e8a3acfd68d3aed38ee0a640177d2f9d797" 108 | 109 | cssstyle@^1.1.1: 110 | version "1.1.1" 111 | resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.1.1.tgz#18b038a9c44d65f7a8e428a653b9f6fe42faf5fb" 112 | dependencies: 113 | cssom "0.3.x" 114 | 115 | dashdash@^1.12.0: 116 | version "1.14.1" 117 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 118 | dependencies: 119 | assert-plus "^1.0.0" 120 | 121 | data-urls@^1.1.0: 122 | version "1.1.0" 123 | resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" 124 | dependencies: 125 | abab "^2.0.0" 126 | whatwg-mimetype "^2.2.0" 127 | whatwg-url "^7.0.0" 128 | 129 | date-format@^2.0.0: 130 | version "2.0.0" 131 | resolved "https://registry.yarnpkg.com/date-format/-/date-format-2.0.0.tgz#7cf7b172f1ec564f0003b39ea302c5498fb98c8f" 132 | 133 | dateformat@3.0.3: 134 | version "3.0.3" 135 | resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" 136 | 137 | deasync-promise@1.0.1: 138 | version "1.0.1" 139 | resolved "https://registry.yarnpkg.com/deasync-promise/-/deasync-promise-1.0.1.tgz#2b27de478167af4ef34ba99879c52ec0cedd61c2" 140 | dependencies: 141 | deasync "^0.1.7" 142 | 143 | deasync@^0.1.7: 144 | version "0.1.14" 145 | resolved "https://registry.yarnpkg.com/deasync/-/deasync-0.1.14.tgz#232ea2252b443948cad033d792eb3b24b0a3d828" 146 | dependencies: 147 | bindings "~1.2.1" 148 | node-addon-api "^1.6.0" 149 | 150 | debug@^3.1.0: 151 | version "3.2.6" 152 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" 153 | dependencies: 154 | ms "^2.1.1" 155 | 156 | deep-is@~0.1.3: 157 | version "0.1.3" 158 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 159 | 160 | delayed-stream@~1.0.0: 161 | version "1.0.0" 162 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 163 | 164 | domexception@^1.0.1: 165 | version "1.0.1" 166 | resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" 167 | dependencies: 168 | webidl-conversions "^4.0.2" 169 | 170 | ecc-jsbn@~0.1.1: 171 | version "0.1.2" 172 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" 173 | dependencies: 174 | jsbn "~0.1.0" 175 | safer-buffer "^2.1.0" 176 | 177 | escodegen@^1.11.0: 178 | version "1.11.0" 179 | resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589" 180 | dependencies: 181 | esprima "^3.1.3" 182 | estraverse "^4.2.0" 183 | esutils "^2.0.2" 184 | optionator "^0.8.1" 185 | optionalDependencies: 186 | source-map "~0.6.1" 187 | 188 | esprima@^3.1.3: 189 | version "3.1.3" 190 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" 191 | 192 | estraverse@^4.2.0: 193 | version "4.2.0" 194 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" 195 | 196 | esutils@^2.0.2: 197 | version "2.0.2" 198 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 199 | 200 | extend@~3.0.2: 201 | version "3.0.2" 202 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 203 | 204 | extsprintf@1.3.0: 205 | version "1.3.0" 206 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 207 | 208 | extsprintf@^1.2.0: 209 | version "1.4.0" 210 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" 211 | 212 | fast-deep-equal@^2.0.1: 213 | version "2.0.1" 214 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" 215 | 216 | fast-json-stable-stringify@^2.0.0: 217 | version "2.0.0" 218 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" 219 | 220 | fast-levenshtein@~2.0.4: 221 | version "2.0.6" 222 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 223 | 224 | flatted@^2.0.0: 225 | version "2.0.0" 226 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" 227 | 228 | forever-agent@~0.6.1: 229 | version "0.6.1" 230 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 231 | 232 | form-data@~2.3.2: 233 | version "2.3.3" 234 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" 235 | dependencies: 236 | asynckit "^0.4.0" 237 | combined-stream "^1.0.6" 238 | mime-types "^2.1.12" 239 | 240 | fs-extra@^7.0.0: 241 | version "7.0.1" 242 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" 243 | dependencies: 244 | graceful-fs "^4.1.2" 245 | jsonfile "^4.0.0" 246 | universalify "^0.1.0" 247 | 248 | getpass@^0.1.1: 249 | version "0.1.7" 250 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 251 | dependencies: 252 | assert-plus "^1.0.0" 253 | 254 | graceful-fs@^4.1.2, graceful-fs@^4.1.6: 255 | version "4.1.15" 256 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" 257 | 258 | har-schema@^2.0.0: 259 | version "2.0.0" 260 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" 261 | 262 | har-validator@~5.1.0: 263 | version "5.1.3" 264 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" 265 | dependencies: 266 | ajv "^6.5.5" 267 | har-schema "^2.0.0" 268 | 269 | html-encoding-sniffer@^1.0.2: 270 | version "1.0.2" 271 | resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" 272 | dependencies: 273 | whatwg-encoding "^1.0.1" 274 | 275 | http-signature@~1.2.0: 276 | version "1.2.0" 277 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" 278 | dependencies: 279 | assert-plus "^1.0.0" 280 | jsprim "^1.2.2" 281 | sshpk "^1.7.0" 282 | 283 | iconv-lite@0.4.24, iconv-lite@^0.4.24: 284 | version "0.4.24" 285 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 286 | dependencies: 287 | safer-buffer ">= 2.1.2 < 3" 288 | 289 | ip-regex@^3.0.0: 290 | version "3.0.0" 291 | resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-3.0.0.tgz#0a934694b4066558c46294244a23cc33116bf732" 292 | 293 | is-typedarray@~1.0.0: 294 | version "1.0.0" 295 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 296 | 297 | isstream@~0.1.2: 298 | version "0.1.2" 299 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 300 | 301 | jquery@^3.4.0: 302 | version "3.4.0" 303 | resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.0.tgz#8de513fa0fa4b2c7d2e48a530e26f0596936efdf" 304 | 305 | jsbn@~0.1.0: 306 | version "0.1.1" 307 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 308 | 309 | jsdom@^13.2.0: 310 | version "13.2.0" 311 | resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-13.2.0.tgz#b1a0dbdadc255435262be8ea3723d2dba0d7eb3a" 312 | dependencies: 313 | abab "^2.0.0" 314 | acorn "^6.0.4" 315 | acorn-globals "^4.3.0" 316 | array-equal "^1.0.0" 317 | cssom "^0.3.4" 318 | cssstyle "^1.1.1" 319 | data-urls "^1.1.0" 320 | domexception "^1.0.1" 321 | escodegen "^1.11.0" 322 | html-encoding-sniffer "^1.0.2" 323 | nwsapi "^2.0.9" 324 | parse5 "5.1.0" 325 | pn "^1.1.0" 326 | request "^2.88.0" 327 | request-promise-native "^1.0.5" 328 | saxes "^3.1.5" 329 | symbol-tree "^3.2.2" 330 | tough-cookie "^2.5.0" 331 | w3c-hr-time "^1.0.1" 332 | w3c-xmlserializer "^1.0.1" 333 | webidl-conversions "^4.0.2" 334 | whatwg-encoding "^1.0.5" 335 | whatwg-mimetype "^2.3.0" 336 | whatwg-url "^7.0.0" 337 | ws "^6.1.2" 338 | xml-name-validator "^3.0.0" 339 | 340 | json-schema-traverse@^0.4.1: 341 | version "0.4.1" 342 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 343 | 344 | json-schema@0.2.3: 345 | version "0.2.3" 346 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 347 | 348 | json-stringify-safe@~5.0.1: 349 | version "5.0.1" 350 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 351 | 352 | jsonfile@^4.0.0: 353 | version "4.0.0" 354 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" 355 | optionalDependencies: 356 | graceful-fs "^4.1.6" 357 | 358 | jsprim@^1.2.2: 359 | version "1.4.1" 360 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" 361 | dependencies: 362 | assert-plus "1.0.0" 363 | extsprintf "1.3.0" 364 | json-schema "0.2.3" 365 | verror "1.10.0" 366 | 367 | levn@~0.3.0: 368 | version "0.3.0" 369 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 370 | dependencies: 371 | prelude-ls "~1.1.2" 372 | type-check "~0.3.2" 373 | 374 | lodash.sortby@^4.7.0: 375 | version "4.7.0" 376 | resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" 377 | 378 | lodash@^4.13.1, lodash@^4.17.10: 379 | version "4.17.21" 380 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 381 | 382 | log4js@^4.0.1: 383 | version "4.0.1" 384 | resolved "https://registry.yarnpkg.com/log4js/-/log4js-4.0.1.tgz#34bd63d9a06fe98fc2f7df90506c8db7eb722625" 385 | dependencies: 386 | date-format "^2.0.0" 387 | debug "^3.1.0" 388 | flatted "^2.0.0" 389 | rfdc "^1.1.2" 390 | streamroller "^1.0.1" 391 | 392 | mime-db@~1.37.0: 393 | version "1.37.0" 394 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8" 395 | 396 | mime-types@^2.1.12, mime-types@~2.1.19: 397 | version "2.1.21" 398 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96" 399 | dependencies: 400 | mime-db "~1.37.0" 401 | 402 | minimist@0.0.8: 403 | version "0.0.8" 404 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 405 | 406 | mkdirp@^0.5.1: 407 | version "0.5.1" 408 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 409 | dependencies: 410 | minimist "0.0.8" 411 | 412 | ms@^2.1.1: 413 | version "2.1.1" 414 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 415 | 416 | node-addon-api@^1.6.0: 417 | version "1.6.2" 418 | resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.6.2.tgz#d8aad9781a5cfc4132cc2fecdbdd982534265217" 419 | 420 | nwsapi@^2.0.9: 421 | version "2.0.9" 422 | resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.9.tgz#77ac0cdfdcad52b6a1151a84e73254edc33ed016" 423 | 424 | oauth-sign@~0.9.0: 425 | version "0.9.0" 426 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" 427 | 428 | optionator@^0.8.1: 429 | version "0.8.2" 430 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" 431 | dependencies: 432 | deep-is "~0.1.3" 433 | fast-levenshtein "~2.0.4" 434 | levn "~0.3.0" 435 | prelude-ls "~1.1.2" 436 | type-check "~0.3.2" 437 | wordwrap "~1.0.0" 438 | 439 | parse5@5.1.0: 440 | version "5.1.0" 441 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" 442 | 443 | performance-now@^2.1.0: 444 | version "2.1.0" 445 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 446 | 447 | pn@^1.1.0: 448 | version "1.1.0" 449 | resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" 450 | 451 | prelude-ls@~1.1.2: 452 | version "1.1.2" 453 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 454 | 455 | psl@^1.1.24, psl@^1.1.28: 456 | version "1.1.31" 457 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184" 458 | 459 | punycode@^1.4.1: 460 | version "1.4.1" 461 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 462 | 463 | punycode@^2.1.0, punycode@^2.1.1: 464 | version "2.1.1" 465 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 466 | 467 | qs@~6.5.2: 468 | version "6.5.2" 469 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" 470 | 471 | request-promise-core@1.1.1: 472 | version "1.1.1" 473 | resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6" 474 | dependencies: 475 | lodash "^4.13.1" 476 | 477 | request-promise-native@^1.0.5: 478 | version "1.0.5" 479 | resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.5.tgz#5281770f68e0c9719e5163fd3fab482215f4fda5" 480 | dependencies: 481 | request-promise-core "1.1.1" 482 | stealthy-require "^1.1.0" 483 | tough-cookie ">=2.3.3" 484 | 485 | request-promise@^4.2.2: 486 | version "4.2.2" 487 | resolved "https://registry.yarnpkg.com/request-promise/-/request-promise-4.2.2.tgz#d1ea46d654a6ee4f8ee6a4fea1018c22911904b4" 488 | dependencies: 489 | bluebird "^3.5.0" 490 | request-promise-core "1.1.1" 491 | stealthy-require "^1.1.0" 492 | tough-cookie ">=2.3.3" 493 | 494 | request@^2.88.0: 495 | version "2.88.0" 496 | resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" 497 | dependencies: 498 | aws-sign2 "~0.7.0" 499 | aws4 "^1.8.0" 500 | caseless "~0.12.0" 501 | combined-stream "~1.0.6" 502 | extend "~3.0.2" 503 | forever-agent "~0.6.1" 504 | form-data "~2.3.2" 505 | har-validator "~5.1.0" 506 | http-signature "~1.2.0" 507 | is-typedarray "~1.0.0" 508 | isstream "~0.1.2" 509 | json-stringify-safe "~5.0.1" 510 | mime-types "~2.1.19" 511 | oauth-sign "~0.9.0" 512 | performance-now "^2.1.0" 513 | qs "~6.5.2" 514 | safe-buffer "^5.1.2" 515 | tough-cookie "~2.4.3" 516 | tunnel-agent "^0.6.0" 517 | uuid "^3.3.2" 518 | 519 | rfdc@^1.1.2: 520 | version "1.1.2" 521 | resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.2.tgz#e6e72d74f5dc39de8f538f65e00c36c18018e349" 522 | 523 | safe-buffer@^5.0.1, safe-buffer@^5.1.2: 524 | version "5.1.2" 525 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 526 | 527 | "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: 528 | version "2.1.2" 529 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 530 | 531 | saxes@^3.1.5: 532 | version "3.1.6" 533 | resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.6.tgz#2d948a47b54918516c5a64096f08865deb5bd8cd" 534 | dependencies: 535 | xmlchars "^1.3.1" 536 | 537 | source-map@~0.6.1: 538 | version "0.6.1" 539 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 540 | 541 | sshpk@^1.7.0: 542 | version "1.16.1" 543 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" 544 | dependencies: 545 | asn1 "~0.2.3" 546 | assert-plus "^1.0.0" 547 | bcrypt-pbkdf "^1.0.0" 548 | dashdash "^1.12.0" 549 | ecc-jsbn "~0.1.1" 550 | getpass "^0.1.1" 551 | jsbn "~0.1.0" 552 | safer-buffer "^2.0.2" 553 | tweetnacl "~0.14.0" 554 | 555 | stealthy-require@^1.1.0: 556 | version "1.1.1" 557 | resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" 558 | 559 | streamroller@^1.0.1: 560 | version "1.0.1" 561 | resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-1.0.1.tgz#6771c9c750638e3ad9de93781d431a05514eeb2f" 562 | dependencies: 563 | async "^2.6.1" 564 | date-format "^2.0.0" 565 | debug "^3.1.0" 566 | fs-extra "^7.0.0" 567 | lodash "^4.17.10" 568 | 569 | symbol-tree@^3.2.2: 570 | version "3.2.2" 571 | resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" 572 | 573 | system-sleep@^1.3.6: 574 | version "1.3.6" 575 | resolved "https://registry.yarnpkg.com/system-sleep/-/system-sleep-1.3.6.tgz#ed9b698ae991f3e6cee85aa0083c9a06a9b6bc03" 576 | dependencies: 577 | deasync-promise "1.0.1" 578 | 579 | tinytim@0.1.1: 580 | version "0.1.1" 581 | resolved "https://registry.yarnpkg.com/tinytim/-/tinytim-0.1.1.tgz#c968a1e5559ad9553224ef7627bab34e3caef8a8" 582 | 583 | tough-cookie@>=2.3.3: 584 | version "3.0.0" 585 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.0.tgz#d2bceddebde633153ff20a52fa844a0dc71dacef" 586 | dependencies: 587 | ip-regex "^3.0.0" 588 | psl "^1.1.28" 589 | punycode "^2.1.1" 590 | 591 | tough-cookie@^2.5.0: 592 | version "2.5.0" 593 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" 594 | dependencies: 595 | psl "^1.1.28" 596 | punycode "^2.1.1" 597 | 598 | tough-cookie@~2.4.3: 599 | version "2.4.3" 600 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" 601 | dependencies: 602 | psl "^1.1.24" 603 | punycode "^1.4.1" 604 | 605 | tr46@^1.0.1: 606 | version "1.0.1" 607 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" 608 | dependencies: 609 | punycode "^2.1.0" 610 | 611 | tracer@^0.9.8: 612 | version "0.9.8" 613 | resolved "https://registry.yarnpkg.com/tracer/-/tracer-0.9.8.tgz#a97862568ce08b2c0b1f8cc753bd2f61fc42296a" 614 | dependencies: 615 | colors "1.3.3" 616 | dateformat "3.0.3" 617 | mkdirp "^0.5.1" 618 | tinytim "0.1.1" 619 | 620 | tunnel-agent@^0.6.0: 621 | version "0.6.0" 622 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 623 | dependencies: 624 | safe-buffer "^5.0.1" 625 | 626 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 627 | version "0.14.5" 628 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 629 | 630 | type-check@~0.3.2: 631 | version "0.3.2" 632 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 633 | dependencies: 634 | prelude-ls "~1.1.2" 635 | 636 | universalify@^0.1.0: 637 | version "0.1.2" 638 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 639 | 640 | uri-js@^4.2.2: 641 | version "4.2.2" 642 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" 643 | dependencies: 644 | punycode "^2.1.0" 645 | 646 | uuid@^3.3.2: 647 | version "3.3.2" 648 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" 649 | 650 | verror@1.10.0: 651 | version "1.10.0" 652 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 653 | dependencies: 654 | assert-plus "^1.0.0" 655 | core-util-is "1.0.2" 656 | extsprintf "^1.2.0" 657 | 658 | w3c-hr-time@^1.0.1: 659 | version "1.0.1" 660 | resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045" 661 | dependencies: 662 | browser-process-hrtime "^0.1.2" 663 | 664 | w3c-xmlserializer@^1.0.1: 665 | version "1.0.1" 666 | resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.0.1.tgz#054cdcd359dc5d1f3ec9be4e272c756af4b21d39" 667 | dependencies: 668 | domexception "^1.0.1" 669 | webidl-conversions "^4.0.2" 670 | xml-name-validator "^3.0.0" 671 | 672 | webidl-conversions@^4.0.2: 673 | version "4.0.2" 674 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" 675 | 676 | whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5: 677 | version "1.0.5" 678 | resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" 679 | dependencies: 680 | iconv-lite "0.4.24" 681 | 682 | whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: 683 | version "2.3.0" 684 | resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" 685 | 686 | whatwg-url@^7.0.0: 687 | version "7.0.0" 688 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd" 689 | dependencies: 690 | lodash.sortby "^4.7.0" 691 | tr46 "^1.0.1" 692 | webidl-conversions "^4.0.2" 693 | 694 | wordwrap@~1.0.0: 695 | version "1.0.0" 696 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 697 | 698 | ws@^6.1.2: 699 | version "6.1.3" 700 | resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.3.tgz#d2d2e5f0e3c700ef2de89080ebc0ac6e1bf3a72d" 701 | dependencies: 702 | async-limiter "~1.0.0" 703 | 704 | xml-name-validator@^3.0.0: 705 | version "3.0.0" 706 | resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" 707 | 708 | xmlchars@^1.3.1: 709 | version "1.3.1" 710 | resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-1.3.1.tgz#1dda035f833dbb4f86a0c28eaa6ca769214793cf" 711 | -------------------------------------------------------------------------------- /src/city.json: -------------------------------------------------------------------------------- 1 | [{"id":"110100000000","name":"市辖区","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/11/1101.html"},{"id":"120100000000","name":"市辖区","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/12/1201.html"},{"id":"130100000000","name":"石家庄市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/13/1301.html"},{"id":"130200000000","name":"唐山市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/13/1302.html"},{"id":"130300000000","name":"秦皇岛市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/13/1303.html"},{"id":"130400000000","name":"邯郸市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/13/1304.html"},{"id":"130500000000","name":"邢台市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/13/1305.html"},{"id":"130600000000","name":"保定市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/13/1306.html"},{"id":"130700000000","name":"张家口市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/13/1307.html"},{"id":"130800000000","name":"承德市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/13/1308.html"},{"id":"130900000000","name":"沧州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/13/1309.html"},{"id":"131000000000","name":"廊坊市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/13/1310.html"},{"id":"131100000000","name":"衡水市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/13/1311.html"},{"id":"140100000000","name":"太原市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/14/1401.html"},{"id":"140200000000","name":"大同市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/14/1402.html"},{"id":"140300000000","name":"阳泉市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/14/1403.html"},{"id":"140400000000","name":"长治市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/14/1404.html"},{"id":"140500000000","name":"晋城市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/14/1405.html"},{"id":"140600000000","name":"朔州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/14/1406.html"},{"id":"140700000000","name":"晋中市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/14/1407.html"},{"id":"140800000000","name":"运城市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/14/1408.html"},{"id":"140900000000","name":"忻州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/14/1409.html"},{"id":"141000000000","name":"临汾市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/14/1410.html"},{"id":"141100000000","name":"吕梁市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/14/1411.html"},{"id":"150100000000","name":"呼和浩特市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/15/1501.html"},{"id":"150200000000","name":"包头市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/15/1502.html"},{"id":"150300000000","name":"乌海市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/15/1503.html"},{"id":"150400000000","name":"赤峰市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/15/1504.html"},{"id":"150500000000","name":"通辽市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/15/1505.html"},{"id":"150600000000","name":"鄂尔多斯市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/15/1506.html"},{"id":"150700000000","name":"呼伦贝尔市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/15/1507.html"},{"id":"150800000000","name":"巴彦淖尔市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/15/1508.html"},{"id":"150900000000","name":"乌兰察布市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/15/1509.html"},{"id":"152200000000","name":"兴安盟","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/15/1522.html"},{"id":"152500000000","name":"锡林郭勒盟","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/15/1525.html"},{"id":"152900000000","name":"阿拉善盟","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/15/1529.html"},{"id":"210100000000","name":"沈阳市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/21/2101.html"},{"id":"210200000000","name":"大连市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/21/2102.html"},{"id":"210300000000","name":"鞍山市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/21/2103.html"},{"id":"210400000000","name":"抚顺市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/21/2104.html"},{"id":"210500000000","name":"本溪市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/21/2105.html"},{"id":"210600000000","name":"丹东市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/21/2106.html"},{"id":"210700000000","name":"锦州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/21/2107.html"},{"id":"210800000000","name":"营口市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/21/2108.html"},{"id":"210900000000","name":"阜新市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/21/2109.html"},{"id":"211000000000","name":"辽阳市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/21/2110.html"},{"id":"211100000000","name":"盘锦市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/21/2111.html"},{"id":"211200000000","name":"铁岭市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/21/2112.html"},{"id":"211300000000","name":"朝阳市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/21/2113.html"},{"id":"211400000000","name":"葫芦岛市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/21/2114.html"},{"id":"220100000000","name":"长春市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/22/2201.html"},{"id":"220200000000","name":"吉林市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/22/2202.html"},{"id":"220300000000","name":"四平市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/22/2203.html"},{"id":"220400000000","name":"辽源市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/22/2204.html"},{"id":"220500000000","name":"通化市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/22/2205.html"},{"id":"220600000000","name":"白山市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/22/2206.html"},{"id":"220700000000","name":"松原市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/22/2207.html"},{"id":"220800000000","name":"白城市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/22/2208.html"},{"id":"222400000000","name":"延边朝鲜族自治州","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/22/2224.html"},{"id":"230100000000","name":"哈尔滨市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/23/2301.html"},{"id":"230200000000","name":"齐齐哈尔市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/23/2302.html"},{"id":"230300000000","name":"鸡西市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/23/2303.html"},{"id":"230400000000","name":"鹤岗市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/23/2304.html"},{"id":"230500000000","name":"双鸭山市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/23/2305.html"},{"id":"230600000000","name":"大庆市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/23/2306.html"},{"id":"230700000000","name":"伊春市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/23/2307.html"},{"id":"230800000000","name":"佳木斯市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/23/2308.html"},{"id":"230900000000","name":"七台河市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/23/2309.html"},{"id":"231000000000","name":"牡丹江市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/23/2310.html"},{"id":"231100000000","name":"黑河市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/23/2311.html"},{"id":"231200000000","name":"绥化市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/23/2312.html"},{"id":"232700000000","name":"大兴安岭地区","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/23/2327.html"},{"id":"310100000000","name":"市辖区","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/31/3101.html"},{"id":"320100000000","name":"南京市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/32/3201.html"},{"id":"320200000000","name":"无锡市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/32/3202.html"},{"id":"320300000000","name":"徐州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/32/3203.html"},{"id":"320400000000","name":"常州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/32/3204.html"},{"id":"320500000000","name":"苏州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/32/3205.html"},{"id":"320600000000","name":"南通市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/32/3206.html"},{"id":"320700000000","name":"连云港市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/32/3207.html"},{"id":"320800000000","name":"淮安市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/32/3208.html"},{"id":"320900000000","name":"盐城市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/32/3209.html"},{"id":"321000000000","name":"扬州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/32/3210.html"},{"id":"321100000000","name":"镇江市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/32/3211.html"},{"id":"321200000000","name":"泰州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/32/3212.html"},{"id":"321300000000","name":"宿迁市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/32/3213.html"},{"id":"330100000000","name":"杭州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/33/3301.html"},{"id":"330200000000","name":"宁波市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/33/3302.html"},{"id":"330300000000","name":"温州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/33/3303.html"},{"id":"330400000000","name":"嘉兴市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/33/3304.html"},{"id":"330500000000","name":"湖州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/33/3305.html"},{"id":"330600000000","name":"绍兴市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/33/3306.html"},{"id":"330700000000","name":"金华市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/33/3307.html"},{"id":"330800000000","name":"衢州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/33/3308.html"},{"id":"330900000000","name":"舟山市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/33/3309.html"},{"id":"331000000000","name":"台州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/33/3310.html"},{"id":"331100000000","name":"丽水市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/33/3311.html"},{"id":"340100000000","name":"合肥市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/34/3401.html"},{"id":"340200000000","name":"芜湖市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/34/3402.html"},{"id":"340300000000","name":"蚌埠市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/34/3403.html"},{"id":"340400000000","name":"淮南市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/34/3404.html"},{"id":"340500000000","name":"马鞍山市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/34/3405.html"},{"id":"340600000000","name":"淮北市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/34/3406.html"},{"id":"340700000000","name":"铜陵市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/34/3407.html"},{"id":"340800000000","name":"安庆市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/34/3408.html"},{"id":"341000000000","name":"黄山市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/34/3410.html"},{"id":"341100000000","name":"滁州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/34/3411.html"},{"id":"341200000000","name":"阜阳市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/34/3412.html"},{"id":"341300000000","name":"宿州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/34/3413.html"},{"id":"341500000000","name":"六安市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/34/3415.html"},{"id":"341600000000","name":"亳州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/34/3416.html"},{"id":"341700000000","name":"池州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/34/3417.html"},{"id":"341800000000","name":"宣城市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/34/3418.html"},{"id":"350100000000","name":"福州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/35/3501.html"},{"id":"350200000000","name":"厦门市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/35/3502.html"},{"id":"350300000000","name":"莆田市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/35/3503.html"},{"id":"350400000000","name":"三明市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/35/3504.html"},{"id":"350500000000","name":"泉州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/35/3505.html"},{"id":"350600000000","name":"漳州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/35/3506.html"},{"id":"350700000000","name":"南平市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/35/3507.html"},{"id":"350800000000","name":"龙岩市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/35/3508.html"},{"id":"350900000000","name":"宁德市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/35/3509.html"},{"id":"360100000000","name":"南昌市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/36/3601.html"},{"id":"360200000000","name":"景德镇市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/36/3602.html"},{"id":"360300000000","name":"萍乡市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/36/3603.html"},{"id":"360400000000","name":"九江市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/36/3604.html"},{"id":"360500000000","name":"新余市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/36/3605.html"},{"id":"360600000000","name":"鹰潭市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/36/3606.html"},{"id":"360700000000","name":"赣州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/36/3607.html"},{"id":"360800000000","name":"吉安市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/36/3608.html"},{"id":"360900000000","name":"宜春市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/36/3609.html"},{"id":"361000000000","name":"抚州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/36/3610.html"},{"id":"361100000000","name":"上饶市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/36/3611.html"},{"id":"370100000000","name":"济南市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/37/3701.html"},{"id":"370200000000","name":"青岛市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/37/3702.html"},{"id":"370300000000","name":"淄博市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/37/3703.html"},{"id":"370400000000","name":"枣庄市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/37/3704.html"},{"id":"370500000000","name":"东营市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/37/3705.html"},{"id":"370600000000","name":"烟台市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/37/3706.html"},{"id":"370700000000","name":"潍坊市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/37/3707.html"},{"id":"370800000000","name":"济宁市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/37/3708.html"},{"id":"370900000000","name":"泰安市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/37/3709.html"},{"id":"371000000000","name":"威海市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/37/3710.html"},{"id":"371100000000","name":"日照市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/37/3711.html"},{"id":"371300000000","name":"临沂市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/37/3713.html"},{"id":"371400000000","name":"德州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/37/3714.html"},{"id":"371500000000","name":"聊城市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/37/3715.html"},{"id":"371600000000","name":"滨州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/37/3716.html"},{"id":"371700000000","name":"菏泽市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/37/3717.html"},{"id":"410100000000","name":"郑州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/41/4101.html"},{"id":"410200000000","name":"开封市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/41/4102.html"},{"id":"410300000000","name":"洛阳市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/41/4103.html"},{"id":"410400000000","name":"平顶山市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/41/4104.html"},{"id":"410500000000","name":"安阳市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/41/4105.html"},{"id":"410600000000","name":"鹤壁市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/41/4106.html"},{"id":"410700000000","name":"新乡市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/41/4107.html"},{"id":"410800000000","name":"焦作市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/41/4108.html"},{"id":"410900000000","name":"濮阳市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/41/4109.html"},{"id":"411000000000","name":"许昌市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/41/4110.html"},{"id":"411100000000","name":"漯河市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/41/4111.html"},{"id":"411200000000","name":"三门峡市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/41/4112.html"},{"id":"411300000000","name":"南阳市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/41/4113.html"},{"id":"411400000000","name":"商丘市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/41/4114.html"},{"id":"411500000000","name":"信阳市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/41/4115.html"},{"id":"411600000000","name":"周口市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/41/4116.html"},{"id":"411700000000","name":"驻马店市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/41/4117.html"},{"id":"419000000000","name":"省直辖县级行政区划","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/41/4190.html"},{"id":"420100000000","name":"武汉市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/42/4201.html"},{"id":"420200000000","name":"黄石市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/42/4202.html"},{"id":"420300000000","name":"十堰市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/42/4203.html"},{"id":"420500000000","name":"宜昌市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/42/4205.html"},{"id":"420600000000","name":"襄阳市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/42/4206.html"},{"id":"420700000000","name":"鄂州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/42/4207.html"},{"id":"420800000000","name":"荆门市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/42/4208.html"},{"id":"420900000000","name":"孝感市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/42/4209.html"},{"id":"421000000000","name":"荆州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/42/4210.html"},{"id":"421100000000","name":"黄冈市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/42/4211.html"},{"id":"421200000000","name":"咸宁市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/42/4212.html"},{"id":"421300000000","name":"随州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/42/4213.html"},{"id":"422800000000","name":"恩施土家族苗族自治州","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/42/4228.html"},{"id":"429000000000","name":"省直辖县级行政区划","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/42/4290.html"},{"id":"430100000000","name":"长沙市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/43/4301.html"},{"id":"430200000000","name":"株洲市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/43/4302.html"},{"id":"430300000000","name":"湘潭市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/43/4303.html"},{"id":"430400000000","name":"衡阳市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/43/4304.html"},{"id":"430500000000","name":"邵阳市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/43/4305.html"},{"id":"430600000000","name":"岳阳市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/43/4306.html"},{"id":"430700000000","name":"常德市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/43/4307.html"},{"id":"430800000000","name":"张家界市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/43/4308.html"},{"id":"430900000000","name":"益阳市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/43/4309.html"},{"id":"431000000000","name":"郴州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/43/4310.html"},{"id":"431100000000","name":"永州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/43/4311.html"},{"id":"431200000000","name":"怀化市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/43/4312.html"},{"id":"431300000000","name":"娄底市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/43/4313.html"},{"id":"433100000000","name":"湘西土家族苗族自治州","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/43/4331.html"},{"id":"440100000000","name":"广州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/44/4401.html"},{"id":"440200000000","name":"韶关市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/44/4402.html"},{"id":"440300000000","name":"深圳市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/44/4403.html"},{"id":"440400000000","name":"珠海市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/44/4404.html"},{"id":"440500000000","name":"汕头市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/44/4405.html"},{"id":"440600000000","name":"佛山市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/44/4406.html"},{"id":"440700000000","name":"江门市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/44/4407.html"},{"id":"440800000000","name":"湛江市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/44/4408.html"},{"id":"440900000000","name":"茂名市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/44/4409.html"},{"id":"441200000000","name":"肇庆市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/44/4412.html"},{"id":"441300000000","name":"惠州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/44/4413.html"},{"id":"441400000000","name":"梅州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/44/4414.html"},{"id":"441500000000","name":"汕尾市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/44/4415.html"},{"id":"441600000000","name":"河源市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/44/4416.html"},{"id":"441700000000","name":"阳江市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/44/4417.html"},{"id":"441800000000","name":"清远市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/44/4418.html"},{"id":"441900000000","name":"东莞市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/44/4419.html"},{"id":"442000000000","name":"中山市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/44/4420.html"},{"id":"445100000000","name":"潮州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/44/4451.html"},{"id":"445200000000","name":"揭阳市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/44/4452.html"},{"id":"445300000000","name":"云浮市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/44/4453.html"},{"id":"450100000000","name":"南宁市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/45/4501.html"},{"id":"450200000000","name":"柳州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/45/4502.html"},{"id":"450300000000","name":"桂林市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/45/4503.html"},{"id":"450400000000","name":"梧州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/45/4504.html"},{"id":"450500000000","name":"北海市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/45/4505.html"},{"id":"450600000000","name":"防城港市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/45/4506.html"},{"id":"450700000000","name":"钦州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/45/4507.html"},{"id":"450800000000","name":"贵港市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/45/4508.html"},{"id":"450900000000","name":"玉林市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/45/4509.html"},{"id":"451000000000","name":"百色市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/45/4510.html"},{"id":"451100000000","name":"贺州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/45/4511.html"},{"id":"451200000000","name":"河池市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/45/4512.html"},{"id":"451300000000","name":"来宾市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/45/4513.html"},{"id":"451400000000","name":"崇左市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/45/4514.html"},{"id":"460100000000","name":"海口市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/46/4601.html"},{"id":"460200000000","name":"三亚市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/46/4602.html"},{"id":"460300000000","name":"三沙市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/46/4603.html"},{"id":"460400000000","name":"儋州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/46/4604.html"},{"id":"469000000000","name":"省直辖县级行政区划","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/46/4690.html"},{"id":"500100000000","name":"市辖区","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/50/5001.html"},{"id":"500200000000","name":"县","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/50/5002.html"},{"id":"510100000000","name":"成都市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/51/5101.html"},{"id":"510300000000","name":"自贡市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/51/5103.html"},{"id":"510400000000","name":"攀枝花市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/51/5104.html"},{"id":"510500000000","name":"泸州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/51/5105.html"},{"id":"510600000000","name":"德阳市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/51/5106.html"},{"id":"510700000000","name":"绵阳市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/51/5107.html"},{"id":"510800000000","name":"广元市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/51/5108.html"},{"id":"510900000000","name":"遂宁市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/51/5109.html"},{"id":"511000000000","name":"内江市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/51/5110.html"},{"id":"511100000000","name":"乐山市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/51/5111.html"},{"id":"511300000000","name":"南充市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/51/5113.html"},{"id":"511400000000","name":"眉山市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/51/5114.html"},{"id":"511500000000","name":"宜宾市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/51/5115.html"},{"id":"511600000000","name":"广安市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/51/5116.html"},{"id":"511700000000","name":"达州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/51/5117.html"},{"id":"511800000000","name":"雅安市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/51/5118.html"},{"id":"511900000000","name":"巴中市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/51/5119.html"},{"id":"512000000000","name":"资阳市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/51/5120.html"},{"id":"513200000000","name":"阿坝藏族羌族自治州","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/51/5132.html"},{"id":"513300000000","name":"甘孜藏族自治州","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/51/5133.html"},{"id":"513400000000","name":"凉山彝族自治州","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/51/5134.html"},{"id":"520100000000","name":"贵阳市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/52/5201.html"},{"id":"520200000000","name":"六盘水市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/52/5202.html"},{"id":"520300000000","name":"遵义市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/52/5203.html"},{"id":"520400000000","name":"安顺市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/52/5204.html"},{"id":"520500000000","name":"毕节市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/52/5205.html"},{"id":"520600000000","name":"铜仁市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/52/5206.html"},{"id":"522300000000","name":"黔西南布依族苗族自治州","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/52/5223.html"},{"id":"522600000000","name":"黔东南苗族侗族自治州","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/52/5226.html"},{"id":"522700000000","name":"黔南布依族苗族自治州","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/52/5227.html"},{"id":"530100000000","name":"昆明市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/53/5301.html"},{"id":"530300000000","name":"曲靖市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/53/5303.html"},{"id":"530400000000","name":"玉溪市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/53/5304.html"},{"id":"530500000000","name":"保山市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/53/5305.html"},{"id":"530600000000","name":"昭通市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/53/5306.html"},{"id":"530700000000","name":"丽江市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/53/5307.html"},{"id":"530800000000","name":"普洱市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/53/5308.html"},{"id":"530900000000","name":"临沧市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/53/5309.html"},{"id":"532300000000","name":"楚雄彝族自治州","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/53/5323.html"},{"id":"532500000000","name":"红河哈尼族彝族自治州","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/53/5325.html"},{"id":"532600000000","name":"文山壮族苗族自治州","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/53/5326.html"},{"id":"532800000000","name":"西双版纳傣族自治州","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/53/5328.html"},{"id":"532900000000","name":"大理白族自治州","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/53/5329.html"},{"id":"533100000000","name":"德宏傣族景颇族自治州","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/53/5331.html"},{"id":"533300000000","name":"怒江傈僳族自治州","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/53/5333.html"},{"id":"533400000000","name":"迪庆藏族自治州","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/53/5334.html"},{"id":"540100000000","name":"拉萨市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/54/5401.html"},{"id":"540200000000","name":"日喀则市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/54/5402.html"},{"id":"540300000000","name":"昌都市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/54/5403.html"},{"id":"540400000000","name":"林芝市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/54/5404.html"},{"id":"540500000000","name":"山南市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/54/5405.html"},{"id":"540600000000","name":"那曲市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/54/5406.html"},{"id":"542500000000","name":"阿里地区","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/54/5425.html"},{"id":"610100000000","name":"西安市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/61/6101.html"},{"id":"610200000000","name":"铜川市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/61/6102.html"},{"id":"610300000000","name":"宝鸡市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/61/6103.html"},{"id":"610400000000","name":"咸阳市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/61/6104.html"},{"id":"610500000000","name":"渭南市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/61/6105.html"},{"id":"610600000000","name":"延安市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/61/6106.html"},{"id":"610700000000","name":"汉中市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/61/6107.html"},{"id":"610800000000","name":"榆林市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/61/6108.html"},{"id":"610900000000","name":"安康市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/61/6109.html"},{"id":"611000000000","name":"商洛市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/61/6110.html"},{"id":"620100000000","name":"兰州市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/62/6201.html"},{"id":"620200000000","name":"嘉峪关市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/62/6202.html"},{"id":"620300000000","name":"金昌市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/62/6203.html"},{"id":"620400000000","name":"白银市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/62/6204.html"},{"id":"620500000000","name":"天水市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/62/6205.html"},{"id":"620600000000","name":"武威市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/62/6206.html"},{"id":"620700000000","name":"张掖市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/62/6207.html"},{"id":"620800000000","name":"平凉市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/62/6208.html"},{"id":"620900000000","name":"酒泉市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/62/6209.html"},{"id":"621000000000","name":"庆阳市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/62/6210.html"},{"id":"621100000000","name":"定西市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/62/6211.html"},{"id":"621200000000","name":"陇南市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/62/6212.html"},{"id":"622900000000","name":"临夏回族自治州","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/62/6229.html"},{"id":"623000000000","name":"甘南藏族自治州","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/62/6230.html"},{"id":"630100000000","name":"西宁市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/63/6301.html"},{"id":"630200000000","name":"海东市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/63/6302.html"},{"id":"632200000000","name":"海北藏族自治州","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/63/6322.html"},{"id":"632300000000","name":"黄南藏族自治州","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/63/6323.html"},{"id":"632500000000","name":"海南藏族自治州","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/63/6325.html"},{"id":"632600000000","name":"果洛藏族自治州","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/63/6326.html"},{"id":"632700000000","name":"玉树藏族自治州","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/63/6327.html"},{"id":"632800000000","name":"海西蒙古族藏族自治州","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/63/6328.html"},{"id":"640100000000","name":"银川市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/64/6401.html"},{"id":"640200000000","name":"石嘴山市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/64/6402.html"},{"id":"640300000000","name":"吴忠市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/64/6403.html"},{"id":"640400000000","name":"固原市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/64/6404.html"},{"id":"640500000000","name":"中卫市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/64/6405.html"},{"id":"650100000000","name":"乌鲁木齐市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/65/6501.html"},{"id":"650200000000","name":"克拉玛依市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/65/6502.html"},{"id":"650400000000","name":"吐鲁番市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/65/6504.html"},{"id":"650500000000","name":"哈密市","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/65/6505.html"},{"id":"652300000000","name":"昌吉回族自治州","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/65/6523.html"},{"id":"652700000000","name":"博尔塔拉蒙古自治州","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/65/6527.html"},{"id":"652800000000","name":"巴音郭楞蒙古自治州","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/65/6528.html"},{"id":"652900000000","name":"阿克苏地区","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/65/6529.html"},{"id":"653000000000","name":"克孜勒苏柯尔克孜自治州","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/65/6530.html"},{"id":"653100000000","name":"喀什地区","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/65/6531.html"},{"id":"653200000000","name":"和田地区","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/65/6532.html"},{"id":"654000000000","name":"伊犁哈萨克自治州","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/65/6540.html"},{"id":"654200000000","name":"塔城地区","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/65/6542.html"},{"id":"654300000000","name":"阿勒泰地区","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/65/6543.html"},{"id":"659000000000","name":"自治区直辖县级行政区划","url":"http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/65/6590.html"}] -------------------------------------------------------------------------------- /mysql/city.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('1', '市辖区', '110100000000', '110000000000'); 2 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('2', '市辖区', '120100000000', '120000000000'); 3 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('3', '石家庄市', '130100000000', '130000000000'); 4 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('4', '唐山市', '130200000000', '130000000000'); 5 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('5', '秦皇岛市', '130300000000', '130000000000'); 6 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('6', '邯郸市', '130400000000', '130000000000'); 7 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('7', '邢台市', '130500000000', '130000000000'); 8 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('8', '保定市', '130600000000', '130000000000'); 9 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('9', '张家口市', '130700000000', '130000000000'); 10 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('10', '承德市', '130800000000', '130000000000'); 11 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('11', '沧州市', '130900000000', '130000000000'); 12 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('12', '廊坊市', '131000000000', '130000000000'); 13 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('13', '衡水市', '131100000000', '130000000000'); 14 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('14', '太原市', '140100000000', '140000000000'); 15 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('15', '大同市', '140200000000', '140000000000'); 16 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('16', '阳泉市', '140300000000', '140000000000'); 17 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('17', '长治市', '140400000000', '140000000000'); 18 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('18', '晋城市', '140500000000', '140000000000'); 19 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('19', '朔州市', '140600000000', '140000000000'); 20 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('20', '晋中市', '140700000000', '140000000000'); 21 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('21', '运城市', '140800000000', '140000000000'); 22 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('22', '忻州市', '140900000000', '140000000000'); 23 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('23', '临汾市', '141000000000', '140000000000'); 24 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('24', '吕梁市', '141100000000', '140000000000'); 25 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('25', '呼和浩特市', '150100000000', '150000000000'); 26 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('26', '包头市', '150200000000', '150000000000'); 27 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('27', '乌海市', '150300000000', '150000000000'); 28 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('28', '赤峰市', '150400000000', '150000000000'); 29 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('29', '通辽市', '150500000000', '150000000000'); 30 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('30', '鄂尔多斯市', '150600000000', '150000000000'); 31 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('31', '呼伦贝尔市', '150700000000', '150000000000'); 32 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('32', '巴彦淖尔市', '150800000000', '150000000000'); 33 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('33', '乌兰察布市', '150900000000', '150000000000'); 34 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('34', '兴安盟', '152200000000', '150000000000'); 35 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('35', '锡林郭勒盟', '152500000000', '150000000000'); 36 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('36', '阿拉善盟', '152900000000', '150000000000'); 37 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('37', '沈阳市', '210100000000', '210000000000'); 38 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('38', '大连市', '210200000000', '210000000000'); 39 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('39', '鞍山市', '210300000000', '210000000000'); 40 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('40', '抚顺市', '210400000000', '210000000000'); 41 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('41', '本溪市', '210500000000', '210000000000'); 42 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('42', '丹东市', '210600000000', '210000000000'); 43 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('43', '锦州市', '210700000000', '210000000000'); 44 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('44', '营口市', '210800000000', '210000000000'); 45 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('45', '阜新市', '210900000000', '210000000000'); 46 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('46', '辽阳市', '211000000000', '210000000000'); 47 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('47', '盘锦市', '211100000000', '210000000000'); 48 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('48', '铁岭市', '211200000000', '210000000000'); 49 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('49', '朝阳市', '211300000000', '210000000000'); 50 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('50', '葫芦岛市', '211400000000', '210000000000'); 51 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('51', '长春市', '220100000000', '220000000000'); 52 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('52', '吉林市', '220200000000', '220000000000'); 53 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('53', '四平市', '220300000000', '220000000000'); 54 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('54', '辽源市', '220400000000', '220000000000'); 55 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('55', '通化市', '220500000000', '220000000000'); 56 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('56', '白山市', '220600000000', '220000000000'); 57 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('57', '松原市', '220700000000', '220000000000'); 58 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('58', '白城市', '220800000000', '220000000000'); 59 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('59', '延边朝鲜族自治州', '222400000000', '220000000000'); 60 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('60', '哈尔滨市', '230100000000', '230000000000'); 61 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('61', '齐齐哈尔市', '230200000000', '230000000000'); 62 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('62', '鸡西市', '230300000000', '230000000000'); 63 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('63', '鹤岗市', '230400000000', '230000000000'); 64 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('64', '双鸭山市', '230500000000', '230000000000'); 65 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('65', '大庆市', '230600000000', '230000000000'); 66 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('66', '伊春市', '230700000000', '230000000000'); 67 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('67', '佳木斯市', '230800000000', '230000000000'); 68 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('68', '七台河市', '230900000000', '230000000000'); 69 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('69', '牡丹江市', '231000000000', '230000000000'); 70 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('70', '黑河市', '231100000000', '230000000000'); 71 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('71', '绥化市', '231200000000', '230000000000'); 72 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('72', '大兴安岭地区', '232700000000', '230000000000'); 73 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('73', '市辖区', '310100000000', '310000000000'); 74 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('74', '南京市', '320100000000', '320000000000'); 75 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('75', '无锡市', '320200000000', '320000000000'); 76 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('76', '徐州市', '320300000000', '320000000000'); 77 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('77', '常州市', '320400000000', '320000000000'); 78 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('78', '苏州市', '320500000000', '320000000000'); 79 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('79', '南通市', '320600000000', '320000000000'); 80 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('80', '连云港市', '320700000000', '320000000000'); 81 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('81', '淮安市', '320800000000', '320000000000'); 82 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('82', '盐城市', '320900000000', '320000000000'); 83 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('83', '扬州市', '321000000000', '320000000000'); 84 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('84', '镇江市', '321100000000', '320000000000'); 85 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('85', '泰州市', '321200000000', '320000000000'); 86 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('86', '宿迁市', '321300000000', '320000000000'); 87 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('87', '杭州市', '330100000000', '330000000000'); 88 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('88', '宁波市', '330200000000', '330000000000'); 89 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('89', '温州市', '330300000000', '330000000000'); 90 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('90', '嘉兴市', '330400000000', '330000000000'); 91 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('91', '湖州市', '330500000000', '330000000000'); 92 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('92', '绍兴市', '330600000000', '330000000000'); 93 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('93', '金华市', '330700000000', '330000000000'); 94 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('94', '衢州市', '330800000000', '330000000000'); 95 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('95', '舟山市', '330900000000', '330000000000'); 96 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('96', '台州市', '331000000000', '330000000000'); 97 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('97', '丽水市', '331100000000', '330000000000'); 98 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('98', '合肥市', '340100000000', '340000000000'); 99 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('99', '芜湖市', '340200000000', '340000000000'); 100 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('100', '蚌埠市', '340300000000', '340000000000'); 101 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('101', '淮南市', '340400000000', '340000000000'); 102 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('102', '马鞍山市', '340500000000', '340000000000'); 103 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('103', '淮北市', '340600000000', '340000000000'); 104 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('104', '铜陵市', '340700000000', '340000000000'); 105 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('105', '安庆市', '340800000000', '340000000000'); 106 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('106', '黄山市', '341000000000', '340000000000'); 107 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('107', '滁州市', '341100000000', '340000000000'); 108 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('108', '阜阳市', '341200000000', '340000000000'); 109 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('109', '宿州市', '341300000000', '340000000000'); 110 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('110', '六安市', '341500000000', '340000000000'); 111 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('111', '亳州市', '341600000000', '340000000000'); 112 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('112', '池州市', '341700000000', '340000000000'); 113 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('113', '宣城市', '341800000000', '340000000000'); 114 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('114', '福州市', '350100000000', '350000000000'); 115 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('115', '厦门市', '350200000000', '350000000000'); 116 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('116', '莆田市', '350300000000', '350000000000'); 117 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('117', '三明市', '350400000000', '350000000000'); 118 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('118', '泉州市', '350500000000', '350000000000'); 119 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('119', '漳州市', '350600000000', '350000000000'); 120 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('120', '南平市', '350700000000', '350000000000'); 121 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('121', '龙岩市', '350800000000', '350000000000'); 122 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('122', '宁德市', '350900000000', '350000000000'); 123 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('123', '南昌市', '360100000000', '360000000000'); 124 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('124', '景德镇市', '360200000000', '360000000000'); 125 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('125', '萍乡市', '360300000000', '360000000000'); 126 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('126', '九江市', '360400000000', '360000000000'); 127 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('127', '新余市', '360500000000', '360000000000'); 128 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('128', '鹰潭市', '360600000000', '360000000000'); 129 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('129', '赣州市', '360700000000', '360000000000'); 130 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('130', '吉安市', '360800000000', '360000000000'); 131 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('131', '宜春市', '360900000000', '360000000000'); 132 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('132', '抚州市', '361000000000', '360000000000'); 133 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('133', '上饶市', '361100000000', '360000000000'); 134 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('134', '济南市', '370100000000', '370000000000'); 135 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('135', '青岛市', '370200000000', '370000000000'); 136 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('136', '淄博市', '370300000000', '370000000000'); 137 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('137', '枣庄市', '370400000000', '370000000000'); 138 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('138', '东营市', '370500000000', '370000000000'); 139 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('139', '烟台市', '370600000000', '370000000000'); 140 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('140', '潍坊市', '370700000000', '370000000000'); 141 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('141', '济宁市', '370800000000', '370000000000'); 142 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('142', '泰安市', '370900000000', '370000000000'); 143 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('143', '威海市', '371000000000', '370000000000'); 144 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('144', '日照市', '371100000000', '370000000000'); 145 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('145', '临沂市', '371300000000', '370000000000'); 146 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('146', '德州市', '371400000000', '370000000000'); 147 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('147', '聊城市', '371500000000', '370000000000'); 148 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('148', '滨州市', '371600000000', '370000000000'); 149 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('149', '菏泽市', '371700000000', '370000000000'); 150 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('150', '郑州市', '410100000000', '410000000000'); 151 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('151', '开封市', '410200000000', '410000000000'); 152 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('152', '洛阳市', '410300000000', '410000000000'); 153 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('153', '平顶山市', '410400000000', '410000000000'); 154 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('154', '安阳市', '410500000000', '410000000000'); 155 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('155', '鹤壁市', '410600000000', '410000000000'); 156 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('156', '新乡市', '410700000000', '410000000000'); 157 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('157', '焦作市', '410800000000', '410000000000'); 158 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('158', '濮阳市', '410900000000', '410000000000'); 159 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('159', '许昌市', '411000000000', '410000000000'); 160 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('160', '漯河市', '411100000000', '410000000000'); 161 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('161', '三门峡市', '411200000000', '410000000000'); 162 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('162', '南阳市', '411300000000', '410000000000'); 163 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('163', '商丘市', '411400000000', '410000000000'); 164 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('164', '信阳市', '411500000000', '410000000000'); 165 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('165', '周口市', '411600000000', '410000000000'); 166 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('166', '驻马店市', '411700000000', '410000000000'); 167 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('167', '省直辖县级行政区划', '419000000000', '410000000000'); 168 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('168', '武汉市', '420100000000', '420000000000'); 169 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('169', '黄石市', '420200000000', '420000000000'); 170 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('170', '十堰市', '420300000000', '420000000000'); 171 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('171', '宜昌市', '420500000000', '420000000000'); 172 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('172', '襄阳市', '420600000000', '420000000000'); 173 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('173', '鄂州市', '420700000000', '420000000000'); 174 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('174', '荆门市', '420800000000', '420000000000'); 175 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('175', '孝感市', '420900000000', '420000000000'); 176 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('176', '荆州市', '421000000000', '420000000000'); 177 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('177', '黄冈市', '421100000000', '420000000000'); 178 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('178', '咸宁市', '421200000000', '420000000000'); 179 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('179', '随州市', '421300000000', '420000000000'); 180 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('180', '恩施土家族苗族自治州', '422800000000', '420000000000'); 181 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('181', '省直辖县级行政区划', '429000000000', '420000000000'); 182 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('182', '长沙市', '430100000000', '430000000000'); 183 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('183', '株洲市', '430200000000', '430000000000'); 184 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('184', '湘潭市', '430300000000', '430000000000'); 185 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('185', '衡阳市', '430400000000', '430000000000'); 186 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('186', '邵阳市', '430500000000', '430000000000'); 187 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('187', '岳阳市', '430600000000', '430000000000'); 188 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('188', '常德市', '430700000000', '430000000000'); 189 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('189', '张家界市', '430800000000', '430000000000'); 190 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('190', '益阳市', '430900000000', '430000000000'); 191 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('191', '郴州市', '431000000000', '430000000000'); 192 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('192', '永州市', '431100000000', '430000000000'); 193 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('193', '怀化市', '431200000000', '430000000000'); 194 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('194', '娄底市', '431300000000', '430000000000'); 195 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('195', '湘西土家族苗族自治州', '433100000000', '430000000000'); 196 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('196', '广州市', '440100000000', '440000000000'); 197 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('197', '韶关市', '440200000000', '440000000000'); 198 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('198', '深圳市', '440300000000', '440000000000'); 199 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('199', '珠海市', '440400000000', '440000000000'); 200 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('200', '汕头市', '440500000000', '440000000000'); 201 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('201', '佛山市', '440600000000', '440000000000'); 202 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('202', '江门市', '440700000000', '440000000000'); 203 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('203', '湛江市', '440800000000', '440000000000'); 204 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('204', '茂名市', '440900000000', '440000000000'); 205 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('205', '肇庆市', '441200000000', '440000000000'); 206 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('206', '惠州市', '441300000000', '440000000000'); 207 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('207', '梅州市', '441400000000', '440000000000'); 208 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('208', '汕尾市', '441500000000', '440000000000'); 209 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('209', '河源市', '441600000000', '440000000000'); 210 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('210', '阳江市', '441700000000', '440000000000'); 211 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('211', '清远市', '441800000000', '440000000000'); 212 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('212', '东莞市', '441900000000', '440000000000'); 213 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('213', '中山市', '442000000000', '440000000000'); 214 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('214', '潮州市', '445100000000', '440000000000'); 215 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('215', '揭阳市', '445200000000', '440000000000'); 216 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('216', '云浮市', '445300000000', '440000000000'); 217 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('217', '南宁市', '450100000000', '450000000000'); 218 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('218', '柳州市', '450200000000', '450000000000'); 219 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('219', '桂林市', '450300000000', '450000000000'); 220 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('220', '梧州市', '450400000000', '450000000000'); 221 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('221', '北海市', '450500000000', '450000000000'); 222 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('222', '防城港市', '450600000000', '450000000000'); 223 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('223', '钦州市', '450700000000', '450000000000'); 224 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('224', '贵港市', '450800000000', '450000000000'); 225 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('225', '玉林市', '450900000000', '450000000000'); 226 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('226', '百色市', '451000000000', '450000000000'); 227 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('227', '贺州市', '451100000000', '450000000000'); 228 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('228', '河池市', '451200000000', '450000000000'); 229 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('229', '来宾市', '451300000000', '450000000000'); 230 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('230', '崇左市', '451400000000', '450000000000'); 231 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('231', '海口市', '460100000000', '460000000000'); 232 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('232', '三亚市', '460200000000', '460000000000'); 233 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('233', '三沙市', '460300000000', '460000000000'); 234 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('234', '儋州市', '460400000000', '460000000000'); 235 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('235', '省直辖县级行政区划', '469000000000', '460000000000'); 236 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('236', '市辖区', '500100000000', '500000000000'); 237 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('237', '县', '500200000000', '500000000000'); 238 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('238', '成都市', '510100000000', '510000000000'); 239 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('239', '自贡市', '510300000000', '510000000000'); 240 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('240', '攀枝花市', '510400000000', '510000000000'); 241 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('241', '泸州市', '510500000000', '510000000000'); 242 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('242', '德阳市', '510600000000', '510000000000'); 243 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('243', '绵阳市', '510700000000', '510000000000'); 244 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('244', '广元市', '510800000000', '510000000000'); 245 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('245', '遂宁市', '510900000000', '510000000000'); 246 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('246', '内江市', '511000000000', '510000000000'); 247 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('247', '乐山市', '511100000000', '510000000000'); 248 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('248', '南充市', '511300000000', '510000000000'); 249 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('249', '眉山市', '511400000000', '510000000000'); 250 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('250', '宜宾市', '511500000000', '510000000000'); 251 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('251', '广安市', '511600000000', '510000000000'); 252 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('252', '达州市', '511700000000', '510000000000'); 253 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('253', '雅安市', '511800000000', '510000000000'); 254 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('254', '巴中市', '511900000000', '510000000000'); 255 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('255', '资阳市', '512000000000', '510000000000'); 256 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('256', '阿坝藏族羌族自治州', '513200000000', '510000000000'); 257 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('257', '甘孜藏族自治州', '513300000000', '510000000000'); 258 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('258', '凉山彝族自治州', '513400000000', '510000000000'); 259 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('259', '贵阳市', '520100000000', '520000000000'); 260 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('260', '六盘水市', '520200000000', '520000000000'); 261 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('261', '遵义市', '520300000000', '520000000000'); 262 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('262', '安顺市', '520400000000', '520000000000'); 263 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('263', '毕节市', '520500000000', '520000000000'); 264 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('264', '铜仁市', '520600000000', '520000000000'); 265 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('265', '黔西南布依族苗族自治州', '522300000000', '520000000000'); 266 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('266', '黔东南苗族侗族自治州', '522600000000', '520000000000'); 267 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('267', '黔南布依族苗族自治州', '522700000000', '520000000000'); 268 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('268', '昆明市', '530100000000', '530000000000'); 269 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('269', '曲靖市', '530300000000', '530000000000'); 270 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('270', '玉溪市', '530400000000', '530000000000'); 271 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('271', '保山市', '530500000000', '530000000000'); 272 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('272', '昭通市', '530600000000', '530000000000'); 273 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('273', '丽江市', '530700000000', '530000000000'); 274 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('274', '普洱市', '530800000000', '530000000000'); 275 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('275', '临沧市', '530900000000', '530000000000'); 276 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('276', '楚雄彝族自治州', '532300000000', '530000000000'); 277 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('277', '红河哈尼族彝族自治州', '532500000000', '530000000000'); 278 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('278', '文山壮族苗族自治州', '532600000000', '530000000000'); 279 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('279', '西双版纳傣族自治州', '532800000000', '530000000000'); 280 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('280', '大理白族自治州', '532900000000', '530000000000'); 281 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('281', '德宏傣族景颇族自治州', '533100000000', '530000000000'); 282 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('282', '怒江傈僳族自治州', '533300000000', '530000000000'); 283 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('283', '迪庆藏族自治州', '533400000000', '530000000000'); 284 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('284', '拉萨市', '540100000000', '540000000000'); 285 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('285', '日喀则市', '540200000000', '540000000000'); 286 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('286', '昌都市', '540300000000', '540000000000'); 287 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('287', '林芝市', '540400000000', '540000000000'); 288 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('288', '山南市', '540500000000', '540000000000'); 289 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('289', '那曲市', '540600000000', '540000000000'); 290 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('290', '阿里地区', '542500000000', '540000000000'); 291 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('291', '西安市', '610100000000', '610000000000'); 292 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('292', '铜川市', '610200000000', '610000000000'); 293 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('293', '宝鸡市', '610300000000', '610000000000'); 294 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('294', '咸阳市', '610400000000', '610000000000'); 295 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('295', '渭南市', '610500000000', '610000000000'); 296 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('296', '延安市', '610600000000', '610000000000'); 297 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('297', '汉中市', '610700000000', '610000000000'); 298 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('298', '榆林市', '610800000000', '610000000000'); 299 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('299', '安康市', '610900000000', '610000000000'); 300 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('300', '商洛市', '611000000000', '610000000000'); 301 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('301', '兰州市', '620100000000', '620000000000'); 302 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('302', '嘉峪关市', '620200000000', '620000000000'); 303 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('303', '金昌市', '620300000000', '620000000000'); 304 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('304', '白银市', '620400000000', '620000000000'); 305 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('305', '天水市', '620500000000', '620000000000'); 306 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('306', '武威市', '620600000000', '620000000000'); 307 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('307', '张掖市', '620700000000', '620000000000'); 308 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('308', '平凉市', '620800000000', '620000000000'); 309 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('309', '酒泉市', '620900000000', '620000000000'); 310 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('310', '庆阳市', '621000000000', '620000000000'); 311 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('311', '定西市', '621100000000', '620000000000'); 312 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('312', '陇南市', '621200000000', '620000000000'); 313 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('313', '临夏回族自治州', '622900000000', '620000000000'); 314 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('314', '甘南藏族自治州', '623000000000', '620000000000'); 315 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('315', '西宁市', '630100000000', '630000000000'); 316 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('316', '海东市', '630200000000', '630000000000'); 317 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('317', '海北藏族自治州', '632200000000', '630000000000'); 318 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('318', '黄南藏族自治州', '632300000000', '630000000000'); 319 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('319', '海南藏族自治州', '632500000000', '630000000000'); 320 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('320', '果洛藏族自治州', '632600000000', '630000000000'); 321 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('321', '玉树藏族自治州', '632700000000', '630000000000'); 322 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('322', '海西蒙古族藏族自治州', '632800000000', '630000000000'); 323 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('323', '银川市', '640100000000', '640000000000'); 324 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('324', '石嘴山市', '640200000000', '640000000000'); 325 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('325', '吴忠市', '640300000000', '640000000000'); 326 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('326', '固原市', '640400000000', '640000000000'); 327 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('327', '中卫市', '640500000000', '640000000000'); 328 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('328', '乌鲁木齐市', '650100000000', '650000000000'); 329 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('329', '克拉玛依市', '650200000000', '650000000000'); 330 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('330', '吐鲁番市', '650400000000', '650000000000'); 331 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('331', '哈密市', '650500000000', '650000000000'); 332 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('332', '昌吉回族自治州', '652300000000', '650000000000'); 333 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('333', '博尔塔拉蒙古自治州', '652700000000', '650000000000'); 334 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('334', '巴音郭楞蒙古自治州', '652800000000', '650000000000'); 335 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('335', '阿克苏地区', '652900000000', '650000000000'); 336 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('336', '克孜勒苏柯尔克孜自治州', '653000000000', '650000000000'); 337 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('337', '喀什地区', '653100000000', '650000000000'); 338 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('338', '和田地区', '653200000000', '650000000000'); 339 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('339', '伊犁哈萨克自治州', '654000000000', '650000000000'); 340 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('340', '塔城地区', '654200000000', '650000000000'); 341 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('341', '阿勒泰地区', '654300000000', '650000000000'); 342 | INSERT INTO city ('_id', 'name', 'city_id', 'province_id') VALUES ('342', '自治区直辖县级行政区划', '659000000000', '650000000000'); 343 | --------------------------------------------------------------------------------