├── 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 |
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 |
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 |
--------------------------------------------------------------------------------