From 64ce30fdfd5533ef7cda80d2760855c077bf6680 Mon Sep 17 00:00:00 2001
From: lychang <632945494@qq.com>
Date: Tue, 26 Aug 2025 09:35:29 +0800
Subject: [PATCH] init
---
.gitignore | 6 +
Dockerfile | 13 +
api/__init__.py | 4 +
api/base.py | 71 +
api/file.py | 40 +
api/interface.py | 84 +
api/logger.py | 139 +
api/mcp.py | 113 +
api/prompt.py | 57 +
api/schema.py | 53 +
api/version.py | 2 +
client_test.py | 8 +
core/config.py | 94 +
core/model.py | 135 +
core/role.py | 45 +
core/types.py | 189 +
db/system.db | Bin 0 -> 57344 bytes
docs/json/city.json | 13704 ++++++++++++++++++++++++++++
docs/json/file_extension.json | 328 +
extension/agent/learner.py | 70 +
extension/chat.py | 123 +
extension/document_loader.py | 70 +
extension/mcp.py | 444 +
extension/rag.py | 142 +
extension/standard.py | 208 +
function/context.py | 37 +
function/file_persist.py | 0
function/weather.py | 83 +
function/web_tool.py | 139 +
http_test.py | 4 +
readme.md | 27 +
requirements.txt | 32 +
structure.md | 13 +
test/1.pdf | Bin 0 -> 4011100 bytes
test/a.html | 4491 ++++++++++
test/a.md | 15430 ++++++++++++++++++++++++++++++++
test/a.py | 247 +
test/img.png | Bin 0 -> 91418 bytes
test/news.md | 869 ++
test/ts.py | 50 +
40 files changed, 37564 insertions(+)
create mode 100644 .gitignore
create mode 100644 Dockerfile
create mode 100644 api/__init__.py
create mode 100644 api/base.py
create mode 100644 api/file.py
create mode 100644 api/interface.py
create mode 100644 api/logger.py
create mode 100644 api/mcp.py
create mode 100644 api/prompt.py
create mode 100644 api/schema.py
create mode 100644 api/version.py
create mode 100644 client_test.py
create mode 100644 core/config.py
create mode 100644 core/model.py
create mode 100644 core/role.py
create mode 100644 core/types.py
create mode 100644 db/system.db
create mode 100644 docs/json/city.json
create mode 100644 docs/json/file_extension.json
create mode 100644 extension/agent/learner.py
create mode 100644 extension/chat.py
create mode 100644 extension/document_loader.py
create mode 100644 extension/mcp.py
create mode 100644 extension/rag.py
create mode 100644 extension/standard.py
create mode 100644 function/context.py
create mode 100644 function/file_persist.py
create mode 100644 function/weather.py
create mode 100644 function/web_tool.py
create mode 100644 http_test.py
create mode 100644 readme.md
create mode 100644 requirements.txt
create mode 100644 structure.md
create mode 100644 test/1.pdf
create mode 100644 test/a.html
create mode 100644 test/a.md
create mode 100644 test/a.py
create mode 100644 test/img.png
create mode 100644 test/news.md
create mode 100644 test/ts.py
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..fb1fdb3
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,6 @@
+.idea
+.env
+./test/*
+./db/*
+./db/vec/*
+./docs/files/*
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..e0da4b7
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,13 @@
+# pull official base image
+FROM private_ai:base
+
+ENV APP_CACHE /app/cache
+# set work dir
+WORKDIR /app
+#RUN mkdir /app/cache
+COPY . .
+# isntall dependencies
+RUN pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple
+RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
+# run
+ENTRYPOINT python http_test.py
diff --git a/api/__init__.py b/api/__init__.py
new file mode 100644
index 0000000..a6d6894
--- /dev/null
+++ b/api/__init__.py
@@ -0,0 +1,4 @@
+from api import logger
+
+from api import interface, schema, mcp, prompt, file
+from api.base import app
diff --git a/api/base.py b/api/base.py
new file mode 100644
index 0000000..07908e9
--- /dev/null
+++ b/api/base.py
@@ -0,0 +1,71 @@
+#!/usr/bin/env python
+# -*- coding:utf-8 -*-
+# @Filename: base.py
+# @Author: lychang
+# @Time: 2022/5/9 13:33
+import functools
+import json
+import time
+import os
+
+from fastapi import FastAPI, Response
+from starlette.middleware.cors import CORSMiddleware
+from api import logger
+
+logger.set_log_root_name("private_assistant")
+log_level = os.getenv("LOG_LEVEL", "info")
+if log_level == "debug":
+ logger.set_log_level("debug")
+
+
+def set_logger_config(api_path=None, business_type="api", source=""):
+ def decorator(func, p=api_path):
+ @functools.wraps(func)
+ def wrapper(api=p, *args, **kwargs):
+ deal_stage = func.__name__
+ if api is None:
+ api = deal_stage
+ if "{" in api:
+ for i in kwargs:
+ if i in api:
+ api = api.replace("{" + i + "}", str(kwargs[i]))
+ x_trace_id = kwargs.get("x_trace_id", None)
+ if x_trace_id is None:
+ x_trace_id = ""
+ _s = time.time()
+ logger.set_extra(deal_stage, business_type, api, x_trace_id, source)
+ data, status_code, headers = func(*args, **kwargs)
+ x_server_time = str(time.time() - _s)
+ headers["x-server-time"] = x_server_time
+ ret = Response(content=data, status_code=status_code, headers=headers)
+ logger.info(f"[{api}] spend time: {x_server_time}.")
+ return ret
+
+ return wrapper
+
+ return decorator
+
+
+def response(data: bytes = b'', status_code: int = 200, headers=None) -> (bytes, int, dict):
+ code_mapping = {400: "Bad Request",
+ 404: "The requested resource is not available",
+ 409: "Original content exists, creation failed",
+ 206: "Updated success",
+ 201: "Created success",
+ 500: "Internal Server Error"
+ }
+ if headers is None:
+ headers = {'Content-Type': 'application/json'}
+ error_msg = code_mapping.get(status_code)
+ if error_msg:
+ data_dict = {"error_code": status_code, "error_msg": error_msg}
+ data = json.dumps(data_dict).encode('utf-8')
+
+ return data, status_code, headers
+
+
+app = FastAPI()
+app.add_middleware(CORSMiddleware, allow_origins=['*'], allow_credentials=True, allow_methods=['*'],
+ allow_headers=['*'])
+
+
diff --git a/api/file.py b/api/file.py
new file mode 100644
index 0000000..a1b8447
--- /dev/null
+++ b/api/file.py
@@ -0,0 +1,40 @@
+import base64
+from sys import prefix
+
+from fastapi import File, UploadFile
+from extension.standard import chat_file_manager
+import json
+from api.base import set_logger_config, response, app
+
+
+@app.post("/api/file/upload")
+@set_logger_config("/api/file/upload")
+def upload_file(file: UploadFile = File(...)):
+ try:
+ file_name = file.filename
+ file_content = file.file.read()
+ file_id = chat_file_manager.c_create(file_name, file_content)
+ file.file.close()
+ if not file_id:
+ return response(status_code=500)
+ result = json.dumps({"file_id": file_id}, ensure_ascii=False).encode("utf-8")
+ return response(result, 200, {'Content-Type': 'application/json'})
+ except Exception as e:
+ return response(status_code=500)
+
+
+@app.get("/api/file/download/{file_id}")
+@set_logger_config("/api/file/download/{file_id}")
+def download_file(file_id: str):
+ try:
+ content_type = "application/octet-stream"
+ file_content, postfix = chat_file_manager.c_get(file_id)
+ if postfix:
+ content_type = chat_file_manager.extension_mapping.get(postfix, "application/octet-stream")
+ return response(file_content, 200, {'Content-Type': content_type,
+ "Content-Disposition": f"attachment; filename={file_id}{postfix}"})
+
+ except FileNotFoundError:
+ return response(status_code=404)
+ except Exception as e:
+ return response(status_code=500)
diff --git a/api/interface.py b/api/interface.py
new file mode 100644
index 0000000..9e29172
--- /dev/null
+++ b/api/interface.py
@@ -0,0 +1,84 @@
+# -*- coding: UTF-8 -*-
+import json
+from typing import Optional
+
+import requests
+from pydantic import BaseModel
+
+from api.base import set_logger_config, response, app
+from api import logger
+from core.config import conf
+from extension.chat import model_manager, mcp_engine
+from api.version import VERSION, DATETIME
+
+
+class ChatBody(BaseModel):
+ message: Optional[str] = ""
+ type: Optional[str] = "text"
+ chat_history: Optional[list[dict]] = None
+
+ def to_dict(self):
+ return self.__dict__
+
+
+@app.get("/hello")
+@set_logger_config("/hello")
+def hello():
+ try:
+ result = {"version": VERSION, "datetime": DATETIME}
+ result = json.dumps(result, ensure_ascii=False).encode("utf-8")
+ return response(result, 200, {'Content-Type': 'application/json'})
+ except Exception as e:
+ logger.error(e)
+ return response(status_code=500)
+
+
+@app.post("/self")
+@app.get("/self")
+@set_logger_config("/self")
+def self_info():
+
+ try:
+ result = {"my_name": conf.assistant_name,
+ "my_company": conf.company_name,
+ "my_role": "智能助理",
+ "my_tools": mcp_engine.pool}
+ result = json.dumps(result, ensure_ascii=False).encode("utf-8")
+ return response(result, 200, {'Content-Type': 'application/json', 'Content-Language': 'zh-CN'})
+ except Exception as e:
+ logger.error(e)
+ return response(status_code=500)
+
+@app.get("/raw")
+@set_logger_config("/raw")
+def raw(url: str):
+ try:
+ result = requests.get(url, headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"})
+ return response(result.content, 200, {'Content-Type': 'application/html', 'Content-Language': 'zh-CN'})
+ except Exception as e:
+ logger.error(e)
+ return response(status_code=500)
+@app.post("/chat")
+@app.post("/api/chat")
+@set_logger_config("/chat")
+def chat(item: ChatBody):
+ try:
+ result = model_manager.chat(item.message, item.type, item.chat_history)
+ result = json.dumps(result, ensure_ascii=False).encode("utf-8")
+ return response(result, 200, {'Content-Type': 'application/json'})
+ except Exception as e:
+ logger.error(e)
+ return response(status_code=500)
+
+
+@app.post("/completions")
+@app.post("/api/call")
+@set_logger_config("/completions")
+def completions(item: ChatBody):
+ try:
+ result = model_manager.generate(item.message)
+ result = json.dumps({"message": result}, ensure_ascii=False).encode("utf-8")
+ return response(result, 200, {'Content-Type': 'application/json'})
+ except Exception as e:
+ logger.error(e)
+ return response(status_code=500)
diff --git a/api/logger.py b/api/logger.py
new file mode 100644
index 0000000..abf3044
--- /dev/null
+++ b/api/logger.py
@@ -0,0 +1,139 @@
+# !/usr/bin/env python
+# -*- coding:utf-8 -*-
+# @Filename: logger.py
+# @Author: lychang
+# @Time: 2021/7/15 16:41
+import json
+import logging
+import sys
+import time
+from typing import Any, Dict
+
+
+def _ensure_str(msg: Any) -> str:
+ """确保消息为字符串类型"""
+ return msg if isinstance(msg, str) else str(msg)
+
+
+class JsonFormatter(logging.Formatter):
+ """自定义JSON格式化器"""
+ default_msec_format = '%s.%03d'
+
+ def __init__(self) -> None:
+ super().__init__()
+
+ def format(self, record: logging.LogRecord) -> str:
+ """格式化日志记录为JSON字符串"""
+ formatted_record = self._build_record_dict(record)
+ return json.dumps(formatted_record, ensure_ascii=False)
+
+ def _build_record_dict(self, record: logging.LogRecord) -> Dict[str, Any]:
+ """构建日志字典结构"""
+ return {
+ 'deal_time': self.formatTime(record),
+ 'level': record.levelname,
+ 'app_type': record.name,
+ 'business_type': getattr(record, 'business_type', ''),
+ 'deal_stage': getattr(record, 'deal_stage', ''),
+ 'object_uuid': getattr(record, 'object_uuid', ''),
+ 'trace_id': getattr(record, 'trace_id', ''),
+ 'source': getattr(record, 'source', ''),
+ 'message': record.getMessage(),
+ }
+
+ def formatTime(self, record: logging.LogRecord, datefmt: str = None) -> str:
+ """格式化时间(包含毫秒)"""
+ ct = self.converter(record.created)
+ if datefmt:
+ s = time.strftime(datefmt, ct)
+ else:
+ s = time.strftime(self.default_time_format, ct)
+ return self.default_msec_format % (s, record.msecs)
+
+
+# 初始化日志系统
+INSTLOG = logging.getLogger("private_assistant")
+INSTLOG.setLevel(logging.INFO)
+handler = logging.StreamHandler(sys.stdout)
+handler.setFormatter(JsonFormatter())
+INSTLOG.addHandler(handler)
+INSTLOG.propagate = False # 防止日志向上传播
+
+DEFAULT_EXTRA = {
+ "business_type": "",
+ "deal_stage": "",
+ "object_uuid": "",
+ "trace_id": "",
+ "source": ""
+}
+
+
+def set_extra(
+ deal_stage: str = "",
+ business_type: str = "",
+ object_uuid: str = "",
+ trace_id: str = "",
+ source: str = ""
+) -> None:
+ """设置全局日志附加信息"""
+ global DEFAULT_EXTRA
+ DEFAULT_EXTRA.update({
+ 'deal_stage': deal_stage,
+ 'business_type': business_type,
+ 'object_uuid': object_uuid,
+ 'trace_id': trace_id,
+ 'source': source,
+ })
+
+
+def _merge_extra(**kwargs: Dict) -> Dict:
+ """合并用户extra与默认配置"""
+ extra = kwargs.get('extra', {})
+ return {
+ 'business_type': extra.get('business_type', DEFAULT_EXTRA['business_type']),
+ 'deal_stage': extra.get('deal_stage', DEFAULT_EXTRA['deal_stage']),
+ 'object_uuid': extra.get('object_uuid', DEFAULT_EXTRA['object_uuid']),
+ 'trace_id': extra.get('trace_id', DEFAULT_EXTRA['trace_id']),
+ 'source': extra.get('source', DEFAULT_EXTRA['source']),
+ }
+
+
+def _log_wrapper(logger_method: Any) -> Any:
+ """日志方法装饰器"""
+
+ def wrapper(msg: Any, *args: Any, **kwargs: Any) -> None:
+ msg = _ensure_str(msg)
+ kwargs['extra'] = _merge_extra(**kwargs)
+ logger_method(msg, *args, **kwargs)
+
+ return wrapper
+
+
+# 使用装饰器统一处理日志方法
+info = _log_wrapper(INSTLOG.info)
+debug = _log_wrapper(INSTLOG.debug)
+warning = _log_wrapper(INSTLOG.warning)
+error = _log_wrapper(INSTLOG.error)
+
+
+def exception(msg: Any, *args: Any, **kwargs: Any) -> None:
+ """异常日志特殊处理"""
+ msg = _ensure_str(msg)
+ kwargs['extra'] = _merge_extra(**kwargs)
+ INSTLOG.error(msg, *args, exc_info=True, **kwargs)
+
+
+def set_log_level(level: str) -> None:
+ """设置日志级别"""
+ level_map = {
+ 'DEBUG': logging.DEBUG,
+ 'INFO': logging.INFO,
+ 'WARNING': logging.WARNING,
+ 'ERROR': logging.ERROR,
+ }
+ INSTLOG.setLevel(level_map.get(level.upper(), logging.INFO))
+
+
+def set_log_root_name(name: str) -> None:
+ """设置日志根名称"""
+ INSTLOG.name = name
diff --git a/api/mcp.py b/api/mcp.py
new file mode 100644
index 0000000..1aed034
--- /dev/null
+++ b/api/mcp.py
@@ -0,0 +1,113 @@
+from typing import Dict
+
+from fastapi import HTTPException
+
+from api.base import app
+from extension.mcp import mcp_manager
+
+# manager
+@app.get("/api/mcp/services", response_model=Dict)
+async def get_mcp_services():
+ """获取所有MCP服务器状态"""
+ return {
+ 'services': [dict(service) for service in mcp_manager.list_services()],
+ 'status': mcp_manager.get_status()
+ }
+
+
+@app.post("/api/mcp/services", response_model=Dict)
+async def create_mcp_service(data: Dict):
+ """创建新的MCP服务"""
+ name = data.get('name')
+ endpoint = data.get('endpoint')
+ protocol = data.get('protocol')
+ if not name or not endpoint or not protocol:
+ raise HTTPException(status_code=400, detail='服务器名称、端点和协议不能为空')
+
+ try:
+ result = mcp_manager.create_service(name, endpoint, protocol, data.get('config'))
+ return result
+ except ValueError as e:
+ raise HTTPException(status_code=400, detail=str(e)) from e
+
+
+@app.delete("/api/mcp/services/{service_id}", response_model=Dict)
+async def delete_mcp_service(service_id: str):
+ """删除MCP服务"""
+ try:
+ result = mcp_manager.delete_service(service_id)
+ return result
+ except ValueError as e:
+ raise HTTPException(status_code=404, detail=str(e)) from e
+
+
+@app.get("/api/mcp/services/{service_id}/start", response_model=Dict)
+async def start_mcp_service(service_id: str):
+ """启动MCP服务"""
+ try:
+ result = mcp_manager.start_service(service_id)
+ return result
+ except ValueError as e:
+ raise HTTPException(status_code=400, detail=str(e)) from e
+ except Exception as e:
+ raise HTTPException(status_code=500, detail=f'启动失败: {str(e)}') from e
+
+
+@app.get("/api/mcp/services/{service_id}/stop", response_model=Dict)
+async def stop_mcp_service(service_id: str):
+ """停止MCP服务"""
+ try:
+ result = mcp_manager.stop_service(service_id)
+ return result
+ except ValueError as e:
+ raise HTTPException(status_code=404, detail=str(e)) from e
+ except Exception as e:
+ raise HTTPException(status_code=500, detail=f'停止失败: {str(e)}') from e
+
+
+@app.get("/api/mcp/services/{service_id}/restart", response_model=Dict)
+async def restart_mcp_service(service_id: str):
+ """重启MCP服务"""
+ try:
+ result = mcp_manager.restart_service(service_id)
+ return result
+ except ValueError as e:
+ raise HTTPException(status_code=400, detail=str(e)) from e
+ except Exception as e:
+ raise HTTPException(status_code=500, detail=f'重启失败: {str(e)}') from e
+
+
+@app.get("/api/mcp/services/{service_id}/status", response_model=Dict)
+async def get_mcp_service_status(service_id: str):
+ """获取指定MCP服务的状态"""
+ try:
+ # Find service by ID
+ service = next((s for s in mcp_manager.services.values() if str(s.id) == service_id), None)
+ if not service:
+ raise HTTPException(status_code=404, detail=f'Service {service_id} not found')
+
+ return {
+ 'id': service.id,
+ 'name': service.name,
+ "instance": service.instance_name,
+ 'endpoint': service.endpoint,
+ 'protocol': service.protocol.name,
+ 'status': service.status,
+ 'config': service.config if service.config else {}
+ }
+ except Exception as e:
+ raise HTTPException(status_code=500, detail=str(e)) from e
+
+
+@app.put("/api/mcp/services/{service_id}", response_model=Dict)
+async def update_mcp_service(service_id: str, data: Dict):
+ """更新MCP服务配置"""
+ try:
+ result = mcp_manager.update_service(service_id, **data)
+ return result
+ except ValueError as e:
+ raise HTTPException(status_code=404, detail=str(e)) from e
+ except Exception as e:
+ raise HTTPException(status_code=500, detail=str(e)) from e
+
+
diff --git a/api/prompt.py b/api/prompt.py
new file mode 100644
index 0000000..f923727
--- /dev/null
+++ b/api/prompt.py
@@ -0,0 +1,57 @@
+from typing import Dict
+
+from fastapi import HTTPException
+from api.base import app
+from extension.standard import db_manager
+
+
+@app.get("/api/prompts", response_model=Dict)
+async def get_prompts(page: int = 1, per_page: int = 5):
+ result = db_manager.prompts.get_all(page=page, per_page=per_page)
+ return {
+ 'items': [{
+ 'id': row[0],
+ 'name': row[1],
+ 'content': '\n'.join(row[2].split('\n')[:2]) + ('\n…' if len(row[2].split('\n')) > 2 else ''),
+ 'created_at': row[3]
+ } for row in result['items']],
+ 'pagination': {
+ 'total': result['total'],
+ 'page': result['page'],
+ 'per_page': result['per_page'],
+ 'total_pages': result['total_pages']
+ }
+ }
+
+
+@app.post("/api/prompts", response_model=Dict)
+async def create_prompt(data: Dict):
+ content = data.get('content')
+ if not content:
+ raise HTTPException(status_code=400, detail='内容不能为空')
+ prompt_id = db_manager.prompts.create(name=data.get('name', ''), content=content)
+ return {'id': prompt_id}
+
+
+@app.get("/api/prompts/{prompt_id}", response_model=Dict)
+async def get_prompt(prompt_id: int):
+ prompt = db_manager.prompts.get_by_id(prompt_id)
+ if prompt:
+ return dict(prompt)
+ raise HTTPException(status_code=404, detail='Prompt not found')
+
+
+@app.put("/api/prompts/{prompt_id}", response_model=Dict)
+async def update_prompt(prompt_id: int, data: Dict):
+ name = data.get('name', '')
+ content = data.get('content')
+ if not content:
+ raise HTTPException(status_code=400, detail='内容不能为空')
+ db_manager.prompts.update(prompt_id, name=name, content=content)
+ return {'message': 'Prompt updated'}
+
+
+@app.delete("/api/prompts/{prompt_id}", response_model=Dict)
+async def delete_prompt(prompt_id: int):
+ db_manager.prompts.delete(prompt_id)
+ return {'message': 'Prompt deleted'}
diff --git a/api/schema.py b/api/schema.py
new file mode 100644
index 0000000..362f87a
--- /dev/null
+++ b/api/schema.py
@@ -0,0 +1,53 @@
+from typing import Dict
+
+from fastapi import HTTPException
+
+from api.base import app
+from extension.standard import db_manager
+
+
+@app.get("/api/schemas", response_model=Dict)
+async def get_schemas(page: int = 1, per_page: int = 5):
+ result = db_manager.schemas.get_all(page=page, per_page=per_page)
+ return {
+ 'items': [dict(row) for row in result['items']],
+ 'pagination': {
+ 'total': result['total'],
+ 'page': result['page'],
+ 'per_page': result['per_page'],
+ 'total_pages': result['total_pages']
+ }
+ }
+
+
+@app.post("/api/schemas", response_model=Dict)
+async def create_schema(data: Dict):
+ content = data.get('content')
+ if not content:
+ raise HTTPException(status_code=400, detail='内容不能为空')
+ schema_id = db_manager.schemas.create(name=data.get('name', ''), content=content)
+ return {'id': schema_id}
+
+
+@app.get("/api/schemas/{schema_id}", response_model=Dict)
+async def get_schema(schema_id: int):
+ schema = db_manager.schemas.get_by_id(schema_id)
+ if schema:
+ return dict(schema)
+ raise HTTPException(status_code=404, detail='Schema not found')
+
+
+@app.put("/api/schemas/{schema_id}", response_model=Dict)
+async def update_schema(schema_id: int, data: Dict):
+ name = data.get('name', '')
+ content = data.get('content')
+ if not content:
+ raise HTTPException(status_code=400, detail='内容不能为空')
+ db_manager.schemas.update(schema_id, name=name, content=content)
+ return {'message': 'Schema updated'}
+
+
+@app.delete("/api/schemas/{schema_id}", response_model=Dict)
+async def delete_schema(schema_id: int):
+ db_manager.schemas.delete(schema_id)
+ return {'message': 'Schema deleted'}
diff --git a/api/version.py b/api/version.py
new file mode 100644
index 0000000..3201d31
--- /dev/null
+++ b/api/version.py
@@ -0,0 +1,2 @@
+VERSION = "1.0.5"
+DATETIME = "2025-02-06"
diff --git a/client_test.py b/client_test.py
new file mode 100644
index 0000000..250d279
--- /dev/null
+++ b/client_test.py
@@ -0,0 +1,8 @@
+from langchain_community.utilities import SearxSearchWrapper
+
+# 使用API代理服务提高访问稳定性
+search = SearxSearchWrapper(searx_host="http://192.168.1.100:10001")
+
+if __name__ == '__main__':
+ result = search.run("谁是深田咏美")
+ print(result)
diff --git a/core/config.py b/core/config.py
new file mode 100644
index 0000000..ba74206
--- /dev/null
+++ b/core/config.py
@@ -0,0 +1,94 @@
+#!/usr/bin/env python
+# -*- coding:utf-8 -*-
+# @Filename: config.py
+# @Author: lychang
+# @Time: 7/5/2023 1:51 PM
+import os
+from dotenv import load_dotenv
+
+load_dotenv()
+
+
+class Configuration:
+ def __init__(self):
+ self.api_uri = os.getenv(
+ "OPENAI_API_BASE"
+ )
+ self.api_key = os.getenv(
+ "OPENAI_API_KEY"
+ )
+ self.think_model = os.getenv(
+ "THINK_MODEL"
+ )
+ self.llm_model = os.getenv(
+ "LLM_MODEL"
+ )
+ self.vision_model = os.getenv(
+ "VISION_MODEL"
+ )
+ self.db_uri = os.getenv(
+ "DATABASE"
+ )
+ self.assistant_name = os.getenv(
+ "ASSISTANT_NAME"
+ )
+ self.company_name = os.getenv(
+ "COMPANY_NAME"
+ )
+conf = Configuration()
+
+
+class ModelConfiguration:
+
+ def __init__(self):
+ self.CONFIG = {
+ "deepseek-chat": {
+ "name": "deepseek-chat",
+ "type": "llm",
+ "temperature": 0.1
+ },
+ "deepseek-r1": {
+ "name": "deepseek-r1",
+ "type": "llm",
+ "temperature": 0.1
+ },
+ "default": {
+ "type": "llm",
+ "temperature": 0.1
+ },
+ "qwen3:8b":{
+ "type": "llm",
+ "temperature": 0.1,
+ "thinking":True
+ },
+ "minicpm-v": {
+ "type": "vision",
+ "temperature": 0.1
+ },
+ "text-embedding-ada-002": {
+ "name": "text-embedding-ada-002",
+ "type": "embedding"
+
+ },
+ "bge-large": {
+ "name": "bge-large",
+ "type": "embedding"
+
+ }
+
+ }
+
+ @property
+ def models(self) -> list[str]:
+ return [i for i in self.CONFIG]
+
+ def get(self, name) -> dict:
+ temp = self.CONFIG.get(name, self.CONFIG["default"])
+ if "name" not in temp:
+ temp["name"] = name
+ temp["host"] = conf.api_uri
+ temp["key"] = conf.api_key
+ return temp
+
+
+model_conf = ModelConfiguration()
diff --git a/core/model.py b/core/model.py
new file mode 100644
index 0000000..49f8960
--- /dev/null
+++ b/core/model.py
@@ -0,0 +1,135 @@
+import base64
+
+from langchain_openai import ChatOpenAI, OpenAIEmbeddings
+from langchain.schema import BaseMessage
+
+from core.config import model_conf, conf
+from core.role import User, AI, System
+from core.types import BaseModel
+
+user = User()
+ai = AI()
+system = System()
+
+
+class ChatModel(BaseModel):
+ def __init__(self, config: dict):
+ super().__init__(config)
+ self._model = ChatOpenAI(
+ base_url=config["host"],
+ api_key=config["key"],
+ model=config["name"],
+ temperature=config["temperature"],
+ extra_body={"enable_thinking":config.get("thinking",False)})
+ self.dialogue = []
+
+ def add_message(self, message: BaseMessage):
+ self.dialogue.append(message)
+
+ def load_chat_history(self, chat_history: list[dict]):
+ self.dialogue = []
+ for i in chat_history:
+ if i["role"] == "user":
+ msg = user.generate(i["message"])
+ self.add_message(msg)
+ elif i["role"] == "system":
+ msg = ai.generate(i["message"])
+ self.add_message(msg)
+ elif i["role"] == "external":
+ msg = system.generate(i["message"])
+ self.add_message(msg)
+
+ @staticmethod
+ def _parser_llm_result(llm_result):
+ content = ""
+ for r in llm_result.generations[0]:
+ content += r.message.content
+ return content
+
+ def llm(self, message: str) -> str:
+ return self._model.invoke(message).content
+
+ def chat(self, message: str) -> str:
+ llm_result = self._model.generate([self.dialogue])
+ return self._parser_llm_result(llm_result)
+
+
+class EmbeddingModel(BaseModel):
+ def __init__(self, config: dict):
+ super().__init__(config)
+ self._model = OpenAIEmbeddings(
+ base_url=config["host"],
+ api_key=config["key"],
+ model=config["name"],
+ check_embedding_ctx_length=False)
+
+ def embed_query(self, text: str):
+ return self._model.embed_query(text)
+
+ def embed_documents(self, texts: list):
+ return self._model.embed_documents(texts)
+
+
+class VisionModel(BaseModel):
+ def __init__(self, config: dict):
+ super().__init__(config)
+ self._model = ChatOpenAI(
+ base_url=config["host"],
+ api_key=config["key"],
+ model=config["name"],
+ temperature=config["temperature"])
+ self._data = None
+
+ @property
+ def base64(self):
+ if self._data is None:
+ return ""
+ return base64.b64encode(self._data).decode('utf-8')
+
+ def load_image(self, bytes_data: bytes):
+ self._data = bytes_data
+
+ def _call_vision_function(self, message: str):
+ messages = [
+ user.generate([
+
+ {"type": "text", "text": message},
+ {"type": "image_url", "image_url": f"data:image/jpeg;base64,{self.base64}"},
+ ])
+ ]
+ return self._model.invoke(messages).content
+
+ def _call_vision_messages(self, messages: list):
+ return self._model.invoke(messages).content
+
+ def query(self, message: str) -> str:
+ return self._call_vision_function(message)
+
+ def describe(self):
+ return self._call_vision_function("完整详细的描述图片中的信息")
+
+
+def get_embedding_model(model_type: str = ""):
+ return EmbeddingModel(model_conf.get(model_type))
+
+
+def get_vision_model(model_type: str = ""):
+ return VisionModel(model_conf.get(model_type))
+
+
+def get_chat_model(model_type: str = ""):
+ return ChatModel(model_conf.get(model_type))
+
+
+think_instance = get_chat_model(conf.think_model)
+llm_instance = get_chat_model(conf.llm_model)
+vision_instance = get_vision_model(conf.vision_model)
+
+
+def run_llm_by_message(message: str):
+ llm_instance.load_chat_history([])
+ return llm_instance.llm(message)
+
+def think_by_message(message: str):
+ think_instance.load_chat_history([])
+ return think_instance.llm(message)
\ No newline at end of file
diff --git a/core/role.py b/core/role.py
new file mode 100644
index 0000000..718378c
--- /dev/null
+++ b/core/role.py
@@ -0,0 +1,45 @@
+from core.types import BaseRole
+
+from langchain.schema import HumanMessage, SystemMessage, AIMessage, ChatMessage
+
+
+class User(BaseRole):
+ def __init__(self):
+ super().__init__("user")
+
+ def generate(self, message):
+ return HumanMessage(content=message)
+
+
+class AI(BaseRole):
+ def __init__(self):
+ super().__init__("ai")
+
+ def generate(self, message):
+ return AIMessage(content=message)
+
+
+class System(BaseRole):
+ def __init__(self):
+ super().__init__("system")
+
+ def generate(self, message):
+ return SystemMessage(content=message)
+
+
+class Uploader(BaseRole):
+ def __init__(self):
+ super().__init__("uploader")
+ self._file = None
+
+ def generate(self, message):
+ return HumanMessage(content=message)
+
+
+class Sender(BaseRole):
+ def __init__(self):
+ super().__init__("sender")
+ self._file = None
+
+ def generate(self, message):
+ return AIMessage(content=message)
diff --git a/core/types.py b/core/types.py
new file mode 100644
index 0000000..2d10552
--- /dev/null
+++ b/core/types.py
@@ -0,0 +1,189 @@
+import os
+import time
+import sqlite3
+import abc
+
+from langchain.schema import Document, BaseMessage
+
+from pysmx.SM3 import hexdigest
+
+from contextlib import contextmanager
+
+
+class BaseCRUD:
+ def __init__(self, table_name, db_path):
+ self.table_name = table_name
+ self.db_path = db_path
+
+ @contextmanager
+ def get_connection(self):
+ conn = sqlite3.connect(self.db_path)
+ conn.row_factory = sqlite3.Row
+ try:
+ yield conn
+ finally:
+ conn.close()
+
+ def get_all(self, page=1, per_page=10):
+ with self.get_connection() as conn:
+ total = conn.execute(f'SELECT COUNT(*) FROM {self.table_name}').fetchone()[0]
+ offset = (page - 1) * per_page
+ items = conn.execute(
+ f'SELECT * FROM {self.table_name} ORDER BY created_at DESC LIMIT ? OFFSET ?',
+ (per_page, offset)
+ ).fetchall()
+ return {
+ 'items': items,
+ 'total': total,
+ 'page': page,
+ 'per_page': per_page,
+ 'total_pages': (total + per_page - 1) // per_page
+ }
+
+ def get_by_id(self, item_id):
+ with self.get_connection() as conn:
+ return conn.execute(f'SELECT * FROM {self.table_name} WHERE id = ?', (item_id,)).fetchone()
+
+ def get_by_name(self, item_name):
+ with self.get_connection() as conn:
+ return conn.execute(f'SELECT * FROM {self.table_name} WHERE name = ?', (item_name,)).fetchone()
+
+ def create(self, **kwargs):
+ columns = ', '.join(kwargs.keys())
+ placeholders = ', '.join(['?'] * len(kwargs))
+ with self.get_connection() as conn:
+ cursor = conn.execute(
+ f'INSERT INTO {self.table_name} ({columns}) VALUES ({placeholders})',
+ tuple(kwargs.values())
+ )
+ conn.commit()
+ return cursor.lastrowid
+
+ def update(self, item_id, **kwargs):
+ set_clause = ', '.join([f'{k} = ?' for k in kwargs.keys()])
+ with self.get_connection() as conn:
+ conn.execute(
+ f'UPDATE {self.table_name} SET {set_clause} WHERE id = ?',
+ (*kwargs.values(), item_id)
+ )
+ conn.commit()
+
+ def delete(self, item_id):
+ with self.get_connection() as conn:
+ conn.execute(f'DELETE FROM {self.table_name} WHERE id = ?', (item_id,))
+ conn.commit()
+
+
+class BaseLoader:
+ def __init__(self):
+ self.content = None
+
+ @abc.abstractmethod
+ def load_content(self, file_path):
+ return b""
+
+ @abc.abstractmethod
+ def load_and_split(self):
+ return []
+
+ @staticmethod
+ def generate_sm3(file_bytes: bytes):
+ return "_" + hexdigest(file_bytes)
+
+ @property
+ def sm3(self):
+ return self.generate_sm3(self.content)
+
+
+class BaseRole:
+ def __init__(self, role: str):
+ self.type = role
+
+ @abc.abstractmethod
+ def generate(self, message) -> BaseMessage:
+ pass
+
+
+class BaseTool:
+ def __init__(self, name: str, description: str):
+ self.name = name
+ self._file = None
+ self.description = description
+ self.execute = None
+
+ def set_file_name(self, file_name: str):
+ self._file = file_name
+
+ def normal(self, data: str, data_type: str = "text") -> dict:
+ return {"data": data, "tool": self.name, "type": data_type}
+
+
+class BaseEngine:
+ def __init__(self, name):
+ self.name = name
+ self.tool_pool = {}
+ self._allow_tools = None
+
+ def set_allow_list(self, allow_list: list) -> None:
+ self._allow_tools = allow_list
+
+ def check_tool_auth(self, name: str) -> bool:
+ if not self._allow_tools:
+ return True
+ return name in self._allow_tools
+
+ def add_tool(self, tool: BaseTool) -> None:
+ self.tool_pool[tool.name] = tool
+
+ @abc.abstractmethod
+ def run(self, message: str, file_name=None, plugin_type=None) -> dict:
+ pass
+
+
+class BaseModel:
+ def __init__(self, config: dict):
+ pass
+
+
+class BasePrompt:
+ def __init__(self, name):
+ self.name = name
+ this_date = time.localtime()
+ week_list = ["一", "二", "三", "四", "五", "六", "日"]
+ self._year = this_date.tm_year
+ self._month = this_date.tm_mon
+ self._day = this_date.tm_mday
+ self._week = "星期" + week_list[this_date.tm_wday]
+ self._prompt = self._load_prompt()
+ self._schema = self._load_schema()
+ self._external = None
+ self._role = None
+ self._context = None
+
+ @abc.abstractmethod
+ def _load_prompt(self):
+ pass
+
+ @abc.abstractmethod
+ def _load_schema(self):
+ pass
+
+ def set_context(self, context: str):
+ self._context = context
+
+ def set_role(self, role: str):
+ self._role = role
+
+ def set_external(self, external: str):
+ self._external = external
+
+ def generate(self, question: str):
+ _field = ["schema", "year", "month", "day", "week", "role", "context", "external"]
+ dic = self.__dict__
+ result = self._prompt
+ for i in _field:
+ if "{{" + i + "}}" in result and dic.get("_" + i):
+ result = result.replace("{{" + i + "}}", str(dic["_" + i]))
+ result = result.replace("{{base_year}}", str(self._year - 1))
+ result = result.replace("{{input}}", question)
+ return result
diff --git a/db/system.db b/db/system.db
new file mode 100644
index 0000000000000000000000000000000000000000..a1e6d2520e258e972c84d71a238c94f48c924e91
GIT binary patch
literal 57344
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
literal 0
HcmV?d00001
diff --git a/docs/json/city.json b/docs/json/city.json
new file mode 100644
index 0000000..5795cb9
--- /dev/null
+++ b/docs/json/city.json
@@ -0,0 +1,13704 @@
+{
+ "北京": {
+ "北京": {
+ "北京": {
+ "AREAID": "101010100",
+ "NAMECN": "北京"
+ },
+ "海淀": {
+ "AREAID": "101010200",
+ "NAMECN": "海淀"
+ },
+ "朝阳": {
+ "AREAID": "101010300",
+ "NAMECN": "朝阳"
+ },
+ "顺义": {
+ "AREAID": "101010400",
+ "NAMECN": "顺义"
+ },
+ "怀柔": {
+ "AREAID": "101010500",
+ "NAMECN": "怀柔"
+ },
+ "通州": {
+ "AREAID": "101010600",
+ "NAMECN": "通州"
+ },
+ "昌平": {
+ "AREAID": "101010700",
+ "NAMECN": "昌平"
+ },
+ "延庆": {
+ "AREAID": "101010800",
+ "NAMECN": "延庆"
+ },
+ "丰台": {
+ "AREAID": "101010900",
+ "NAMECN": "丰台"
+ },
+ "石景山": {
+ "AREAID": "101011000",
+ "NAMECN": "石景山"
+ },
+ "大兴": {
+ "AREAID": "101011100",
+ "NAMECN": "大兴"
+ },
+ "房山": {
+ "AREAID": "101011200",
+ "NAMECN": "房山"
+ },
+ "密云": {
+ "AREAID": "101011300",
+ "NAMECN": "密云"
+ },
+ "门头沟": {
+ "AREAID": "101011400",
+ "NAMECN": "门头沟"
+ },
+ "平谷": {
+ "AREAID": "101011500",
+ "NAMECN": "平谷"
+ }
+ }
+ },
+ "上海": {
+ "上海": {
+ "上海": {
+ "AREAID": "101020100",
+ "NAMECN": "上海"
+ },
+ "闵行": {
+ "AREAID": "101020200",
+ "NAMECN": "闵行"
+ },
+ "宝山": {
+ "AREAID": "101020300",
+ "NAMECN": "宝山"
+ },
+ "嘉定": {
+ "AREAID": "101020500",
+ "NAMECN": "嘉定"
+ },
+ "浦东新区": {
+ "AREAID": "101020600",
+ "NAMECN": "浦东新区"
+ },
+ "金山": {
+ "AREAID": "101020700",
+ "NAMECN": "金山"
+ },
+ "青浦": {
+ "AREAID": "101020800",
+ "NAMECN": "青浦"
+ },
+ "松江": {
+ "AREAID": "101020900",
+ "NAMECN": "松江"
+ },
+ "奉贤": {
+ "AREAID": "101021000",
+ "NAMECN": "奉贤"
+ },
+ "崇明": {
+ "AREAID": "101021100",
+ "NAMECN": "崇明"
+ },
+ "徐汇": {
+ "AREAID": "101021200",
+ "NAMECN": "徐汇"
+ }
+ }
+ },
+ "天津": {
+ "天津": {
+ "天津": {
+ "AREAID": "101030100",
+ "NAMECN": "天津"
+ },
+ "武清": {
+ "AREAID": "101030200",
+ "NAMECN": "武清"
+ },
+ "宝坻": {
+ "AREAID": "101030300",
+ "NAMECN": "宝坻"
+ },
+ "东丽": {
+ "AREAID": "101030400",
+ "NAMECN": "东丽"
+ },
+ "西青": {
+ "AREAID": "101030500",
+ "NAMECN": "西青"
+ },
+ "北辰": {
+ "AREAID": "101030600",
+ "NAMECN": "北辰"
+ },
+ "宁河": {
+ "AREAID": "101030700",
+ "NAMECN": "宁河"
+ },
+ "静海": {
+ "AREAID": "101030900",
+ "NAMECN": "静海"
+ },
+ "津南": {
+ "AREAID": "101031000",
+ "NAMECN": "津南"
+ },
+ "滨海新区": {
+ "AREAID": "101031100",
+ "NAMECN": "滨海新区"
+ },
+ "蓟县": {
+ "AREAID": "101031400",
+ "NAMECN": "蓟县"
+ }
+ }
+ },
+ "重庆": {
+ "重庆": {
+ "重庆": {
+ "AREAID": "101040100",
+ "NAMECN": "重庆"
+ },
+ "永川": {
+ "AREAID": "101040200",
+ "NAMECN": "永川"
+ },
+ "合川": {
+ "AREAID": "101040300",
+ "NAMECN": "合川"
+ },
+ "南川": {
+ "AREAID": "101040400",
+ "NAMECN": "南川"
+ },
+ "江津": {
+ "AREAID": "101040500",
+ "NAMECN": "江津"
+ },
+ "万盛": {
+ "AREAID": "101040600",
+ "NAMECN": "万盛"
+ },
+ "渝北": {
+ "AREAID": "101040700",
+ "NAMECN": "渝北"
+ },
+ "北碚": {
+ "AREAID": "101040800",
+ "NAMECN": "北碚"
+ },
+ "巴南": {
+ "AREAID": "101040900",
+ "NAMECN": "巴南"
+ },
+ "长寿": {
+ "AREAID": "101041000",
+ "NAMECN": "长寿"
+ },
+ "黔江": {
+ "AREAID": "101041100",
+ "NAMECN": "黔江"
+ },
+ "万州": {
+ "AREAID": "101041300",
+ "NAMECN": "万州"
+ },
+ "涪陵": {
+ "AREAID": "101041400",
+ "NAMECN": "涪陵"
+ },
+ "开县": {
+ "AREAID": "101041500",
+ "NAMECN": "开县"
+ },
+ "城口": {
+ "AREAID": "101041600",
+ "NAMECN": "城口"
+ },
+ "云阳": {
+ "AREAID": "101041700",
+ "NAMECN": "云阳"
+ },
+ "巫溪": {
+ "AREAID": "101041800",
+ "NAMECN": "巫溪"
+ },
+ "奉节": {
+ "AREAID": "101041900",
+ "NAMECN": "奉节"
+ },
+ "巫山": {
+ "AREAID": "101042000",
+ "NAMECN": "巫山"
+ },
+ "潼南": {
+ "AREAID": "101042100",
+ "NAMECN": "潼南"
+ },
+ "垫江": {
+ "AREAID": "101042200",
+ "NAMECN": "垫江"
+ },
+ "梁平": {
+ "AREAID": "101042300",
+ "NAMECN": "梁平"
+ },
+ "忠县": {
+ "AREAID": "101042400",
+ "NAMECN": "忠县"
+ },
+ "石柱": {
+ "AREAID": "101042500",
+ "NAMECN": "石柱"
+ },
+ "大足": {
+ "AREAID": "101042600",
+ "NAMECN": "大足"
+ },
+ "荣昌": {
+ "AREAID": "101042700",
+ "NAMECN": "荣昌"
+ },
+ "铜梁": {
+ "AREAID": "101042800",
+ "NAMECN": "铜梁"
+ },
+ "璧山": {
+ "AREAID": "101042900",
+ "NAMECN": "璧山"
+ },
+ "丰都": {
+ "AREAID": "101043000",
+ "NAMECN": "丰都"
+ },
+ "武隆": {
+ "AREAID": "101043100",
+ "NAMECN": "武隆"
+ },
+ "彭水": {
+ "AREAID": "101043200",
+ "NAMECN": "彭水"
+ },
+ "綦江": {
+ "AREAID": "101043300",
+ "NAMECN": "綦江"
+ },
+ "酉阳": {
+ "AREAID": "101043400",
+ "NAMECN": "酉阳"
+ },
+ "秀山": {
+ "AREAID": "101043600",
+ "NAMECN": "秀山"
+ }
+ }
+ },
+ "黑龙江":{
+ "哈尔滨":{
+ "哈尔滨":{
+ "AREAID":"101050101",
+ "NAMECN":"哈尔滨"
+ },
+ "双城":{
+ "AREAID":"101050102",
+ "NAMECN":"双城"
+ },
+ "呼兰":{
+ "AREAID":"101050103",
+ "NAMECN":"呼兰"
+ },
+ "阿城":{
+ "AREAID":"101050104",
+ "NAMECN":"阿城"
+ },
+ "宾县":{
+ "AREAID":"101050105",
+ "NAMECN":"宾县"
+ },
+ "依兰":{
+ "AREAID":"101050106",
+ "NAMECN":"依兰"
+ },
+ "巴彦":{
+ "AREAID":"101050107",
+ "NAMECN":"巴彦"
+ },
+ "通河":{
+ "AREAID":"101050108",
+ "NAMECN":"通河"
+ },
+ "方正":{
+ "AREAID":"101050109",
+ "NAMECN":"方正"
+ },
+ "延寿":{
+ "AREAID":"101050110",
+ "NAMECN":"延寿"
+ },
+ "尚志":{
+ "AREAID":"101050111",
+ "NAMECN":"尚志"
+ },
+ "五常":{
+ "AREAID":"101050112",
+ "NAMECN":"五常"
+ },
+ "木兰":{
+ "AREAID":"101050113",
+ "NAMECN":"木兰"
+ },
+ "道里":{
+ "AREAID":"101050114",
+ "NAMECN":"道里"
+ },
+ "南岗":{
+ "AREAID":"101050115",
+ "NAMECN":"南岗"
+ },
+ "道外":{
+ "AREAID":"101050116",
+ "NAMECN":"道外"
+ },
+ "平房":{
+ "AREAID":"101050117",
+ "NAMECN":"平房"
+ },
+ "松北":{
+ "AREAID":"101050118",
+ "NAMECN":"松北"
+ },
+ "香坊":{
+ "AREAID":"101050119",
+ "NAMECN":"香坊"
+ }
+ },
+ "齐齐哈尔":{
+ "齐齐哈尔":{
+ "AREAID":"101050201",
+ "NAMECN":"齐齐哈尔"
+ },
+ "讷河":{
+ "AREAID":"101050202",
+ "NAMECN":"讷河"
+ },
+ "龙江":{
+ "AREAID":"101050203",
+ "NAMECN":"龙江"
+ },
+ "甘南":{
+ "AREAID":"101050204",
+ "NAMECN":"甘南"
+ },
+ "富裕":{
+ "AREAID":"101050205",
+ "NAMECN":"富裕"
+ },
+ "依安":{
+ "AREAID":"101050206",
+ "NAMECN":"依安"
+ },
+ "拜泉":{
+ "AREAID":"101050207",
+ "NAMECN":"拜泉"
+ },
+ "克山":{
+ "AREAID":"101050208",
+ "NAMECN":"克山"
+ },
+ "克东":{
+ "AREAID":"101050209",
+ "NAMECN":"克东"
+ },
+ "泰来":{
+ "AREAID":"101050210",
+ "NAMECN":"泰来"
+ },
+ "龙沙":{
+ "AREAID":"101050211",
+ "NAMECN":"龙沙"
+ },
+ "建华":{
+ "AREAID":"101050212",
+ "NAMECN":"建华"
+ },
+ "铁锋":{
+ "AREAID":"101050213",
+ "NAMECN":"铁锋"
+ },
+ "昂昂溪":{
+ "AREAID":"101050214",
+ "NAMECN":"昂昂溪"
+ },
+ "富拉尔基":{
+ "AREAID":"101050215",
+ "NAMECN":"富拉尔基"
+ },
+ "碾子山":{
+ "AREAID":"101050216",
+ "NAMECN":"碾子山"
+ },
+ "梅里斯":{
+ "AREAID":"101050217",
+ "NAMECN":"梅里斯"
+ }
+ },
+ "牡丹江":{
+ "牡丹江":{
+ "AREAID":"101050301",
+ "NAMECN":"牡丹江"
+ },
+ "海林":{
+ "AREAID":"101050302",
+ "NAMECN":"海林"
+ },
+ "穆棱":{
+ "AREAID":"101050303",
+ "NAMECN":"穆棱"
+ },
+ "林口":{
+ "AREAID":"101050304",
+ "NAMECN":"林口"
+ },
+ "绥芬河":{
+ "AREAID":"101050305",
+ "NAMECN":"绥芬河"
+ },
+ "宁安":{
+ "AREAID":"101050306",
+ "NAMECN":"宁安"
+ },
+ "东宁":{
+ "AREAID":"101050307",
+ "NAMECN":"东宁"
+ },
+ "东安":{
+ "AREAID":"101050308",
+ "NAMECN":"东安"
+ },
+ "阳明":{
+ "AREAID":"101050309",
+ "NAMECN":"阳明"
+ },
+ "爱民":{
+ "AREAID":"101050310",
+ "NAMECN":"爱民"
+ },
+ "西安":{
+ "AREAID":"101050311",
+ "NAMECN":"西安"
+ }
+ },
+ "佳木斯":{
+ "佳木斯":{
+ "AREAID":"101050401",
+ "NAMECN":"佳木斯"
+ },
+ "汤原":{
+ "AREAID":"101050402",
+ "NAMECN":"汤原"
+ },
+ "抚远":{
+ "AREAID":"101050403",
+ "NAMECN":"抚远"
+ },
+ "桦川":{
+ "AREAID":"101050404",
+ "NAMECN":"桦川"
+ },
+ "桦南":{
+ "AREAID":"101050405",
+ "NAMECN":"桦南"
+ },
+ "同江":{
+ "AREAID":"101050406",
+ "NAMECN":"同江"
+ },
+ "富锦":{
+ "AREAID":"101050407",
+ "NAMECN":"富锦"
+ },
+ "向阳":{
+ "AREAID":"101050408",
+ "NAMECN":"向阳"
+ },
+ "前进":{
+ "AREAID":"101050409",
+ "NAMECN":"前进"
+ },
+ "东风":{
+ "AREAID":"101050410",
+ "NAMECN":"东风"
+ },
+ "郊区":{
+ "AREAID":"101050411",
+ "NAMECN":"郊区"
+ }
+ },
+ "绥化":{
+ "绥化":{
+ "AREAID":"101050501",
+ "NAMECN":"绥化"
+ },
+ "肇东":{
+ "AREAID":"101050502",
+ "NAMECN":"肇东"
+ },
+ "安达":{
+ "AREAID":"101050503",
+ "NAMECN":"安达"
+ },
+ "海伦":{
+ "AREAID":"101050504",
+ "NAMECN":"海伦"
+ },
+ "明水":{
+ "AREAID":"101050505",
+ "NAMECN":"明水"
+ },
+ "望奎":{
+ "AREAID":"101050506",
+ "NAMECN":"望奎"
+ },
+ "兰西":{
+ "AREAID":"101050507",
+ "NAMECN":"兰西"
+ },
+ "青冈":{
+ "AREAID":"101050508",
+ "NAMECN":"青冈"
+ },
+ "庆安":{
+ "AREAID":"101050509",
+ "NAMECN":"庆安"
+ },
+ "绥棱":{
+ "AREAID":"101050510",
+ "NAMECN":"绥棱"
+ },
+ "北林":{
+ "AREAID":"101050511",
+ "NAMECN":"北林"
+ }
+ },
+ "黑河":{
+ "黑河":{
+ "AREAID":"101050601",
+ "NAMECN":"黑河"
+ },
+ "嫩江":{
+ "AREAID":"101050602",
+ "NAMECN":"嫩江"
+ },
+ "孙吴":{
+ "AREAID":"101050603",
+ "NAMECN":"孙吴"
+ },
+ "逊克":{
+ "AREAID":"101050604",
+ "NAMECN":"逊克"
+ },
+ "五大连池":{
+ "AREAID":"101050605",
+ "NAMECN":"五大连池"
+ },
+ "北安":{
+ "AREAID":"101050606",
+ "NAMECN":"北安"
+ },
+ "爱辉":{
+ "AREAID":"101050607",
+ "NAMECN":"爱辉"
+ }
+ },
+ "大兴安岭":{
+ "大兴安岭":{
+ "AREAID":"101050701",
+ "NAMECN":"大兴安岭"
+ },
+ "塔河":{
+ "AREAID":"101050702",
+ "NAMECN":"塔河"
+ },
+ "漠河":{
+ "AREAID":"101050703",
+ "NAMECN":"漠河"
+ },
+ "呼玛":{
+ "AREAID":"101050704",
+ "NAMECN":"呼玛"
+ },
+ "呼中":{
+ "AREAID":"101050705",
+ "NAMECN":"呼中"
+ },
+ "新林":{
+ "AREAID":"101050706",
+ "NAMECN":"新林"
+ },
+ "加格达奇":{
+ "AREAID":"101050708",
+ "NAMECN":"加格达奇"
+ }
+ },
+ "伊春":{
+ "伊春":{
+ "AREAID":"101050801",
+ "NAMECN":"伊春"
+ },
+ "乌伊岭":{
+ "AREAID":"101050802",
+ "NAMECN":"乌伊岭"
+ },
+ "五营":{
+ "AREAID":"101050803",
+ "NAMECN":"五营"
+ },
+ "铁力":{
+ "AREAID":"101050804",
+ "NAMECN":"铁力"
+ },
+ "嘉荫":{
+ "AREAID":"101050805",
+ "NAMECN":"嘉荫"
+ },
+ "南岔":{
+ "AREAID":"101050806",
+ "NAMECN":"南岔"
+ },
+ "友好":{
+ "AREAID":"101050807",
+ "NAMECN":"友好"
+ },
+ "西林":{
+ "AREAID":"101050808",
+ "NAMECN":"西林"
+ },
+ "翠峦":{
+ "AREAID":"101050809",
+ "NAMECN":"翠峦"
+ },
+ "新青":{
+ "AREAID":"101050810",
+ "NAMECN":"新青"
+ },
+ "美溪":{
+ "AREAID":"101050811",
+ "NAMECN":"美溪"
+ },
+ "金山屯":{
+ "AREAID":"101050812",
+ "NAMECN":"金山屯"
+ },
+ "乌马河":{
+ "AREAID":"101050813",
+ "NAMECN":"乌马河"
+ },
+ "汤旺河":{
+ "AREAID":"101050814",
+ "NAMECN":"汤旺河"
+ },
+ "带岭":{
+ "AREAID":"101050815",
+ "NAMECN":"带岭"
+ },
+ "红星":{
+ "AREAID":"101050816",
+ "NAMECN":"红星"
+ },
+ "上甘岭":{
+ "AREAID":"101050817",
+ "NAMECN":"上甘岭"
+ }
+ },
+ "大庆":{
+ "大庆":{
+ "AREAID":"101050901",
+ "NAMECN":"大庆"
+ },
+ "林甸":{
+ "AREAID":"101050902",
+ "NAMECN":"林甸"
+ },
+ "肇州":{
+ "AREAID":"101050903",
+ "NAMECN":"肇州"
+ },
+ "肇源":{
+ "AREAID":"101050904",
+ "NAMECN":"肇源"
+ },
+ "杜尔伯特":{
+ "AREAID":"101050905",
+ "NAMECN":"杜尔伯特"
+ },
+ "萨尔图":{
+ "AREAID":"101050906",
+ "NAMECN":"萨尔图"
+ },
+ "龙凤":{
+ "AREAID":"101050907",
+ "NAMECN":"龙凤"
+ },
+ "让胡路":{
+ "AREAID":"101050908",
+ "NAMECN":"让胡路"
+ },
+ "红岗":{
+ "AREAID":"101050909",
+ "NAMECN":"红岗"
+ },
+ "大同":{
+ "AREAID":"101050910",
+ "NAMECN":"大同"
+ }
+ },
+ "七台河":{
+ "新兴":{
+ "AREAID":"101051001",
+ "NAMECN":"新兴"
+ },
+ "七台河":{
+ "AREAID":"101051002",
+ "NAMECN":"七台河"
+ },
+ "勃利":{
+ "AREAID":"101051003",
+ "NAMECN":"勃利"
+ },
+ "桃山":{
+ "AREAID":"101051004",
+ "NAMECN":"桃山"
+ },
+ "茄子河":{
+ "AREAID":"101051005",
+ "NAMECN":"茄子河"
+ }
+ },
+ "鸡西":{
+ "鸡西":{
+ "AREAID":"101051101",
+ "NAMECN":"鸡西"
+ },
+ "虎林":{
+ "AREAID":"101051102",
+ "NAMECN":"虎林"
+ },
+ "密山":{
+ "AREAID":"101051103",
+ "NAMECN":"密山"
+ },
+ "鸡东":{
+ "AREAID":"101051104",
+ "NAMECN":"鸡东"
+ },
+ "鸡冠":{
+ "AREAID":"101051105",
+ "NAMECN":"鸡冠"
+ },
+ "恒山":{
+ "AREAID":"101051106",
+ "NAMECN":"恒山"
+ },
+ "滴道":{
+ "AREAID":"101051107",
+ "NAMECN":"滴道"
+ },
+ "梨树":{
+ "AREAID":"101051108",
+ "NAMECN":"梨树"
+ },
+ "城子河":{
+ "AREAID":"101051109",
+ "NAMECN":"城子河"
+ },
+ "麻山":{
+ "AREAID":"101051110",
+ "NAMECN":"麻山"
+ }
+ },
+ "鹤岗":{
+ "鹤岗":{
+ "AREAID":"101051201",
+ "NAMECN":"鹤岗"
+ },
+ "绥滨":{
+ "AREAID":"101051202",
+ "NAMECN":"绥滨"
+ },
+ "萝北":{
+ "AREAID":"101051203",
+ "NAMECN":"萝北"
+ },
+ "向阳":{
+ "AREAID":"101051204",
+ "NAMECN":"向阳"
+ },
+ "工农":{
+ "AREAID":"101051205",
+ "NAMECN":"工农"
+ },
+ "南山":{
+ "AREAID":"101051206",
+ "NAMECN":"南山"
+ },
+ "兴安":{
+ "AREAID":"101051207",
+ "NAMECN":"兴安"
+ },
+ "东山":{
+ "AREAID":"101051208",
+ "NAMECN":"东山"
+ },
+ "兴山":{
+ "AREAID":"101051209",
+ "NAMECN":"兴山"
+ }
+ },
+ "双鸭山":{
+ "双鸭山":{
+ "AREAID":"101051301",
+ "NAMECN":"双鸭山"
+ },
+ "集贤":{
+ "AREAID":"101051302",
+ "NAMECN":"集贤"
+ },
+ "宝清":{
+ "AREAID":"101051303",
+ "NAMECN":"宝清"
+ },
+ "饶河":{
+ "AREAID":"101051304",
+ "NAMECN":"饶河"
+ },
+ "友谊":{
+ "AREAID":"101051305",
+ "NAMECN":"友谊"
+ },
+ "尖山":{
+ "AREAID":"101051306",
+ "NAMECN":"尖山"
+ },
+ "岭东":{
+ "AREAID":"101051307",
+ "NAMECN":"岭东"
+ },
+ "四方台":{
+ "AREAID":"101051308",
+ "NAMECN":"四方台"
+ },
+ "宝山":{
+ "AREAID":"101051309",
+ "NAMECN":"宝山"
+ }
+ }
+ },
+ "吉林":{
+ "长春":{
+ "长春":{
+ "AREAID":"101060101",
+ "NAMECN":"长春"
+ },
+ "农安":{
+ "AREAID":"101060102",
+ "NAMECN":"农安"
+ },
+ "德惠":{
+ "AREAID":"101060103",
+ "NAMECN":"德惠"
+ },
+ "九台":{
+ "AREAID":"101060104",
+ "NAMECN":"九台"
+ },
+ "榆树":{
+ "AREAID":"101060105",
+ "NAMECN":"榆树"
+ },
+ "双阳":{
+ "AREAID":"101060106",
+ "NAMECN":"双阳"
+ },
+ "二道":{
+ "AREAID":"101060107",
+ "NAMECN":"二道"
+ },
+ "南关":{
+ "AREAID":"101060108",
+ "NAMECN":"南关"
+ },
+ "宽城":{
+ "AREAID":"101060109",
+ "NAMECN":"宽城"
+ },
+ "朝阳":{
+ "AREAID":"101060110",
+ "NAMECN":"朝阳"
+ },
+ "绿园":{
+ "AREAID":"101060111",
+ "NAMECN":"绿园"
+ }
+ },
+ "吉林":{
+ "吉林":{
+ "AREAID":"101060201",
+ "NAMECN":"吉林"
+ },
+ "舒兰":{
+ "AREAID":"101060202",
+ "NAMECN":"舒兰"
+ },
+ "永吉":{
+ "AREAID":"101060203",
+ "NAMECN":"永吉"
+ },
+ "蛟河":{
+ "AREAID":"101060204",
+ "NAMECN":"蛟河"
+ },
+ "磐石":{
+ "AREAID":"101060205",
+ "NAMECN":"磐石"
+ },
+ "桦甸":{
+ "AREAID":"101060206",
+ "NAMECN":"桦甸"
+ },
+ "昌邑":{
+ "AREAID":"101060207",
+ "NAMECN":"昌邑"
+ },
+ "龙潭":{
+ "AREAID":"101060208",
+ "NAMECN":"龙潭"
+ },
+ "船营":{
+ "AREAID":"101060209",
+ "NAMECN":"船营"
+ },
+ "丰满":{
+ "AREAID":"101060210",
+ "NAMECN":"丰满"
+ }
+ },
+ "延边":{
+ "延吉":{
+ "AREAID":"101060301",
+ "NAMECN":"延吉"
+ },
+ "敦化":{
+ "AREAID":"101060302",
+ "NAMECN":"敦化"
+ },
+ "安图":{
+ "AREAID":"101060303",
+ "NAMECN":"安图"
+ },
+ "汪清":{
+ "AREAID":"101060304",
+ "NAMECN":"汪清"
+ },
+ "和龙":{
+ "AREAID":"101060305",
+ "NAMECN":"和龙"
+ },
+ "延边":{
+ "AREAID":"101060306",
+ "NAMECN":"延边"
+ },
+ "龙井":{
+ "AREAID":"101060307",
+ "NAMECN":"龙井"
+ },
+ "珲春":{
+ "AREAID":"101060308",
+ "NAMECN":"珲春"
+ },
+ "图们":{
+ "AREAID":"101060309",
+ "NAMECN":"图们"
+ }
+ },
+ "四平":{
+ "四平":{
+ "AREAID":"101060401",
+ "NAMECN":"四平"
+ },
+ "双辽":{
+ "AREAID":"101060402",
+ "NAMECN":"双辽"
+ },
+ "梨树":{
+ "AREAID":"101060403",
+ "NAMECN":"梨树"
+ },
+ "公主岭":{
+ "AREAID":"101060404",
+ "NAMECN":"公主岭"
+ },
+ "伊通":{
+ "AREAID":"101060405",
+ "NAMECN":"伊通"
+ },
+ "铁西":{
+ "AREAID":"101060406",
+ "NAMECN":"铁西"
+ },
+ "铁东":{
+ "AREAID":"101060407",
+ "NAMECN":"铁东"
+ }
+ },
+ "通化":{
+ "通化":{
+ "AREAID":"101060501",
+ "NAMECN":"通化"
+ },
+ "梅河口":{
+ "AREAID":"101060502",
+ "NAMECN":"梅河口"
+ },
+ "柳河":{
+ "AREAID":"101060503",
+ "NAMECN":"柳河"
+ },
+ "辉南":{
+ "AREAID":"101060504",
+ "NAMECN":"辉南"
+ },
+ "集安":{
+ "AREAID":"101060505",
+ "NAMECN":"集安"
+ },
+ "通化县":{
+ "AREAID":"101060506",
+ "NAMECN":"通化县"
+ },
+ "东昌":{
+ "AREAID":"101060507",
+ "NAMECN":"东昌"
+ },
+ "二道江":{
+ "AREAID":"101060508",
+ "NAMECN":"二道江"
+ }
+ },
+ "白城":{
+ "白城":{
+ "AREAID":"101060601",
+ "NAMECN":"白城"
+ },
+ "洮南":{
+ "AREAID":"101060602",
+ "NAMECN":"洮南"
+ },
+ "大安":{
+ "AREAID":"101060603",
+ "NAMECN":"大安"
+ },
+ "镇赉":{
+ "AREAID":"101060604",
+ "NAMECN":"镇赉"
+ },
+ "通榆":{
+ "AREAID":"101060605",
+ "NAMECN":"通榆"
+ },
+ "洮北":{
+ "AREAID":"101060606",
+ "NAMECN":"洮北"
+ }
+ },
+ "辽源":{
+ "辽源":{
+ "AREAID":"101060701",
+ "NAMECN":"辽源"
+ },
+ "东丰":{
+ "AREAID":"101060702",
+ "NAMECN":"东丰"
+ },
+ "东辽":{
+ "AREAID":"101060703",
+ "NAMECN":"东辽"
+ },
+ "龙山":{
+ "AREAID":"101060704",
+ "NAMECN":"龙山"
+ },
+ "西安":{
+ "AREAID":"101060705",
+ "NAMECN":"西安"
+ }
+ },
+ "松原":{
+ "松原":{
+ "AREAID":"101060801",
+ "NAMECN":"松原"
+ },
+ "乾安":{
+ "AREAID":"101060802",
+ "NAMECN":"乾安"
+ },
+ "前郭":{
+ "AREAID":"101060803",
+ "NAMECN":"前郭"
+ },
+ "长岭":{
+ "AREAID":"101060804",
+ "NAMECN":"长岭"
+ },
+ "扶余":{
+ "AREAID":"101060805",
+ "NAMECN":"扶余"
+ },
+ "宁江":{
+ "AREAID":"101060806",
+ "NAMECN":"宁江"
+ }
+ },
+ "白山":{
+ "白山":{
+ "AREAID":"101060901",
+ "NAMECN":"白山"
+ },
+ "靖宇":{
+ "AREAID":"101060902",
+ "NAMECN":"靖宇"
+ },
+ "临江":{
+ "AREAID":"101060903",
+ "NAMECN":"临江"
+ },
+ "东岗":{
+ "AREAID":"101060904",
+ "NAMECN":"东岗"
+ },
+ "长白":{
+ "AREAID":"101060905",
+ "NAMECN":"长白"
+ },
+ "抚松":{
+ "AREAID":"101060906",
+ "NAMECN":"抚松"
+ },
+ "江源":{
+ "AREAID":"101060907",
+ "NAMECN":"江源"
+ },
+ "浑江":{
+ "AREAID":"101060908",
+ "NAMECN":"浑江"
+ }
+ }
+ },
+ "辽宁":{
+ "沈阳":{
+ "沈阳":{
+ "AREAID":"101070101",
+ "NAMECN":"沈阳"
+ },
+ "浑南":{
+ "AREAID":"101070102",
+ "NAMECN":"浑南"
+ },
+ "辽中":{
+ "AREAID":"101070103",
+ "NAMECN":"辽中"
+ },
+ "康平":{
+ "AREAID":"101070104",
+ "NAMECN":"康平"
+ },
+ "法库":{
+ "AREAID":"101070105",
+ "NAMECN":"法库"
+ },
+ "新民":{
+ "AREAID":"101070106",
+ "NAMECN":"新民"
+ },
+ "和平":{
+ "AREAID":"101070107",
+ "NAMECN":"和平"
+ },
+ "沈河":{
+ "AREAID":"101070108",
+ "NAMECN":"沈河"
+ },
+ "大东":{
+ "AREAID":"101070109",
+ "NAMECN":"大东"
+ },
+ "皇姑":{
+ "AREAID":"101070110",
+ "NAMECN":"皇姑"
+ },
+ "铁西":{
+ "AREAID":"101070111",
+ "NAMECN":"铁西"
+ },
+ "苏家屯":{
+ "AREAID":"101070112",
+ "NAMECN":"苏家屯"
+ },
+ "沈北新区":{
+ "AREAID":"101070113",
+ "NAMECN":"沈北新区"
+ },
+ "于洪":{
+ "AREAID":"101070114",
+ "NAMECN":"于洪"
+ }
+ },
+ "大连":{
+ "大连":{
+ "AREAID":"101070201",
+ "NAMECN":"大连"
+ },
+ "瓦房店":{
+ "AREAID":"101070202",
+ "NAMECN":"瓦房店"
+ },
+ "金州":{
+ "AREAID":"101070203",
+ "NAMECN":"金州"
+ },
+ "普兰店":{
+ "AREAID":"101070204",
+ "NAMECN":"普兰店"
+ },
+ "旅顺":{
+ "AREAID":"101070205",
+ "NAMECN":"旅顺"
+ },
+ "长海":{
+ "AREAID":"101070206",
+ "NAMECN":"长海"
+ },
+ "庄河":{
+ "AREAID":"101070207",
+ "NAMECN":"庄河"
+ },
+ "中山":{
+ "AREAID":"101070208",
+ "NAMECN":"中山"
+ },
+ "西岗":{
+ "AREAID":"101070209",
+ "NAMECN":"西岗"
+ },
+ "沙河口":{
+ "AREAID":"101070210",
+ "NAMECN":"沙河口"
+ },
+ "甘井子":{
+ "AREAID":"101070211",
+ "NAMECN":"甘井子"
+ }
+ },
+ "鞍山":{
+ "鞍山":{
+ "AREAID":"101070301",
+ "NAMECN":"鞍山"
+ },
+ "台安":{
+ "AREAID":"101070302",
+ "NAMECN":"台安"
+ },
+ "岫岩":{
+ "AREAID":"101070303",
+ "NAMECN":"岫岩"
+ },
+ "海城":{
+ "AREAID":"101070304",
+ "NAMECN":"海城"
+ },
+ "铁东":{
+ "AREAID":"101070305",
+ "NAMECN":"铁东"
+ },
+ "铁西":{
+ "AREAID":"101070306",
+ "NAMECN":"铁西"
+ },
+ "立山":{
+ "AREAID":"101070307",
+ "NAMECN":"立山"
+ },
+ "千山":{
+ "AREAID":"101070308",
+ "NAMECN":"千山"
+ }
+ },
+ "抚顺":{
+ "抚顺":{
+ "AREAID":"101070401",
+ "NAMECN":"抚顺"
+ },
+ "新宾":{
+ "AREAID":"101070402",
+ "NAMECN":"新宾"
+ },
+ "清原":{
+ "AREAID":"101070403",
+ "NAMECN":"清原"
+ },
+ "新抚":{
+ "AREAID":"101070405",
+ "NAMECN":"新抚"
+ },
+ "东洲":{
+ "AREAID":"101070406",
+ "NAMECN":"东洲"
+ },
+ "望花":{
+ "AREAID":"101070407",
+ "NAMECN":"望花"
+ },
+ "顺城":{
+ "AREAID":"101070408",
+ "NAMECN":"顺城"
+ }
+ },
+ "本溪":{
+ "本溪":{
+ "AREAID":"101070501",
+ "NAMECN":"本溪"
+ },
+ "本溪县":{
+ "AREAID":"101070502",
+ "NAMECN":"本溪县"
+ },
+ "平山":{
+ "AREAID":"101070503",
+ "NAMECN":"平山"
+ },
+ "桓仁":{
+ "AREAID":"101070504",
+ "NAMECN":"桓仁"
+ },
+ "溪湖":{
+ "AREAID":"101070505",
+ "NAMECN":"溪湖"
+ },
+ "明山":{
+ "AREAID":"101070506",
+ "NAMECN":"明山"
+ },
+ "南芬":{
+ "AREAID":"101070507",
+ "NAMECN":"南芬"
+ }
+ },
+ "丹东":{
+ "丹东":{
+ "AREAID":"101070601",
+ "NAMECN":"丹东"
+ },
+ "凤城":{
+ "AREAID":"101070602",
+ "NAMECN":"凤城"
+ },
+ "宽甸":{
+ "AREAID":"101070603",
+ "NAMECN":"宽甸"
+ },
+ "东港":{
+ "AREAID":"101070604",
+ "NAMECN":"东港"
+ },
+ "元宝":{
+ "AREAID":"101070605",
+ "NAMECN":"元宝"
+ },
+ "振兴":{
+ "AREAID":"101070606",
+ "NAMECN":"振兴"
+ },
+ "振安":{
+ "AREAID":"101070607",
+ "NAMECN":"振安"
+ }
+ },
+ "锦州":{
+ "锦州":{
+ "AREAID":"101070701",
+ "NAMECN":"锦州"
+ },
+ "凌海":{
+ "AREAID":"101070702",
+ "NAMECN":"凌海"
+ },
+ "古塔":{
+ "AREAID":"101070703",
+ "NAMECN":"古塔"
+ },
+ "义县":{
+ "AREAID":"101070704",
+ "NAMECN":"义县"
+ },
+ "黑山":{
+ "AREAID":"101070705",
+ "NAMECN":"黑山"
+ },
+ "北镇":{
+ "AREAID":"101070706",
+ "NAMECN":"北镇"
+ },
+ "凌河":{
+ "AREAID":"101070707",
+ "NAMECN":"凌河"
+ },
+ "太和":{
+ "AREAID":"101070708",
+ "NAMECN":"太和"
+ }
+ },
+ "营口":{
+ "营口":{
+ "AREAID":"101070801",
+ "NAMECN":"营口"
+ },
+ "大石桥":{
+ "AREAID":"101070802",
+ "NAMECN":"大石桥"
+ },
+ "盖州":{
+ "AREAID":"101070803",
+ "NAMECN":"盖州"
+ },
+ "站前":{
+ "AREAID":"101070804",
+ "NAMECN":"站前"
+ },
+ "西市":{
+ "AREAID":"101070805",
+ "NAMECN":"西市"
+ },
+ "鲅鱼圈":{
+ "AREAID":"101070806",
+ "NAMECN":"鲅鱼圈"
+ },
+ "老边":{
+ "AREAID":"101070807",
+ "NAMECN":"老边"
+ }
+ },
+ "阜新":{
+ "阜新":{
+ "AREAID":"101070901",
+ "NAMECN":"阜新"
+ },
+ "彰武":{
+ "AREAID":"101070902",
+ "NAMECN":"彰武"
+ },
+ "海州":{
+ "AREAID":"101070903",
+ "NAMECN":"海州"
+ },
+ "新邱":{
+ "AREAID":"101070904",
+ "NAMECN":"新邱"
+ },
+ "太平":{
+ "AREAID":"101070905",
+ "NAMECN":"太平"
+ },
+ "清河门":{
+ "AREAID":"101070906",
+ "NAMECN":"清河门"
+ },
+ "细河":{
+ "AREAID":"101070907",
+ "NAMECN":"细河"
+ }
+ },
+ "辽阳":{
+ "辽阳":{
+ "AREAID":"101071001",
+ "NAMECN":"辽阳"
+ },
+ "辽阳县":{
+ "AREAID":"101071002",
+ "NAMECN":"辽阳县"
+ },
+ "灯塔":{
+ "AREAID":"101071003",
+ "NAMECN":"灯塔"
+ },
+ "弓长岭":{
+ "AREAID":"101071004",
+ "NAMECN":"弓长岭"
+ },
+ "白塔":{
+ "AREAID":"101071005",
+ "NAMECN":"白塔"
+ },
+ "文圣":{
+ "AREAID":"101071006",
+ "NAMECN":"文圣"
+ },
+ "宏伟":{
+ "AREAID":"101071007",
+ "NAMECN":"宏伟"
+ },
+ "太子河":{
+ "AREAID":"101071008",
+ "NAMECN":"太子河"
+ }
+ },
+ "铁岭":{
+ "铁岭":{
+ "AREAID":"101071101",
+ "NAMECN":"铁岭"
+ },
+ "开原":{
+ "AREAID":"101071102",
+ "NAMECN":"开原"
+ },
+ "昌图":{
+ "AREAID":"101071103",
+ "NAMECN":"昌图"
+ },
+ "西丰":{
+ "AREAID":"101071104",
+ "NAMECN":"西丰"
+ },
+ "调兵山":{
+ "AREAID":"101071105",
+ "NAMECN":"调兵山"
+ },
+ "银州":{
+ "AREAID":"101071106",
+ "NAMECN":"银州"
+ },
+ "清河":{
+ "AREAID":"101071107",
+ "NAMECN":"清河"
+ }
+ },
+ "朝阳":{
+ "朝阳":{
+ "AREAID":"101071201",
+ "NAMECN":"朝阳"
+ },
+ "双塔":{
+ "AREAID":"101071202",
+ "NAMECN":"双塔"
+ },
+ "凌源":{
+ "AREAID":"101071203",
+ "NAMECN":"凌源"
+ },
+ "喀左":{
+ "AREAID":"101071204",
+ "NAMECN":"喀左"
+ },
+ "北票":{
+ "AREAID":"101071205",
+ "NAMECN":"北票"
+ },
+ "龙城":{
+ "AREAID":"101071206",
+ "NAMECN":"龙城"
+ },
+ "建平县":{
+ "AREAID":"101071207",
+ "NAMECN":"建平县"
+ }
+ },
+ "盘锦":{
+ "盘锦":{
+ "AREAID":"101071301",
+ "NAMECN":"盘锦"
+ },
+ "大洼":{
+ "AREAID":"101071302",
+ "NAMECN":"大洼"
+ },
+ "盘山":{
+ "AREAID":"101071303",
+ "NAMECN":"盘山"
+ },
+ "双台子":{
+ "AREAID":"101071304",
+ "NAMECN":"双台子"
+ },
+ "兴隆台":{
+ "AREAID":"101071305",
+ "NAMECN":"兴隆台"
+ }
+ },
+ "葫芦岛":{
+ "葫芦岛":{
+ "AREAID":"101071401",
+ "NAMECN":"葫芦岛"
+ },
+ "建昌":{
+ "AREAID":"101071402",
+ "NAMECN":"建昌"
+ },
+ "绥中":{
+ "AREAID":"101071403",
+ "NAMECN":"绥中"
+ },
+ "兴城":{
+ "AREAID":"101071404",
+ "NAMECN":"兴城"
+ },
+ "连山":{
+ "AREAID":"101071405",
+ "NAMECN":"连山"
+ },
+ "龙港":{
+ "AREAID":"101071406",
+ "NAMECN":"龙港"
+ },
+ "南票":{
+ "AREAID":"101071407",
+ "NAMECN":"南票"
+ }
+ }
+ },
+ "内蒙古":{
+ "呼和浩特":{
+ "呼和浩特":{
+ "AREAID":"101080101",
+ "NAMECN":"呼和浩特"
+ },
+ "土左旗":{
+ "AREAID":"101080102",
+ "NAMECN":"土左旗"
+ },
+ "托县":{
+ "AREAID":"101080103",
+ "NAMECN":"托县"
+ },
+ "和林":{
+ "AREAID":"101080104",
+ "NAMECN":"和林"
+ },
+ "清水河":{
+ "AREAID":"101080105",
+ "NAMECN":"清水河"
+ },
+ "赛罕":{
+ "AREAID":"101080106",
+ "NAMECN":"赛罕"
+ },
+ "武川":{
+ "AREAID":"101080107",
+ "NAMECN":"武川"
+ },
+ "新城":{
+ "AREAID":"101080108",
+ "NAMECN":"新城"
+ },
+ "回民":{
+ "AREAID":"101080109",
+ "NAMECN":"回民"
+ },
+ "玉泉":{
+ "AREAID":"101080110",
+ "NAMECN":"玉泉"
+ }
+ },
+ "包头":{
+ "包头":{
+ "AREAID":"101080201",
+ "NAMECN":"包头"
+ },
+ "白云鄂博":{
+ "AREAID":"101080202",
+ "NAMECN":"白云鄂博"
+ },
+ "满都拉":{
+ "AREAID":"101080203",
+ "NAMECN":"满都拉"
+ },
+ "土右旗":{
+ "AREAID":"101080204",
+ "NAMECN":"土右旗"
+ },
+ "固阳":{
+ "AREAID":"101080205",
+ "NAMECN":"固阳"
+ },
+ "达茂旗":{
+ "AREAID":"101080206",
+ "NAMECN":"达茂旗"
+ },
+ "希拉穆仁":{
+ "AREAID":"101080207",
+ "NAMECN":"希拉穆仁"
+ },
+ "东河":{
+ "AREAID":"101080208",
+ "NAMECN":"东河"
+ },
+ "昆都仑":{
+ "AREAID":"101080209",
+ "NAMECN":"昆都仑"
+ },
+ "青山":{
+ "AREAID":"101080210",
+ "NAMECN":"青山"
+ },
+ "石拐":{
+ "AREAID":"101080211",
+ "NAMECN":"石拐"
+ },
+ "九原":{
+ "AREAID":"101080212",
+ "NAMECN":"九原"
+ }
+ },
+ "乌海":{
+ "乌海":{
+ "AREAID":"101080301",
+ "NAMECN":"乌海"
+ },
+ "海勃湾":{
+ "AREAID":"101080302",
+ "NAMECN":"海勃湾"
+ },
+ "海南":{
+ "AREAID":"101080303",
+ "NAMECN":"海南"
+ },
+ "乌达":{
+ "AREAID":"101080304",
+ "NAMECN":"乌达"
+ }
+ },
+ "乌兰察布":{
+ "集宁":{
+ "AREAID":"101080401",
+ "NAMECN":"集宁"
+ },
+ "卓资":{
+ "AREAID":"101080402",
+ "NAMECN":"卓资"
+ },
+ "化德":{
+ "AREAID":"101080403",
+ "NAMECN":"化德"
+ },
+ "商都":{
+ "AREAID":"101080404",
+ "NAMECN":"商都"
+ },
+ "乌兰察布":{
+ "AREAID":"101080405",
+ "NAMECN":"乌兰察布"
+ },
+ "兴和":{
+ "AREAID":"101080406",
+ "NAMECN":"兴和"
+ },
+ "凉城":{
+ "AREAID":"101080407",
+ "NAMECN":"凉城"
+ },
+ "察右前旗":{
+ "AREAID":"101080408",
+ "NAMECN":"察右前旗"
+ },
+ "察右中旗":{
+ "AREAID":"101080409",
+ "NAMECN":"察右中旗"
+ },
+ "察右后旗":{
+ "AREAID":"101080410",
+ "NAMECN":"察右后旗"
+ },
+ "四子王旗":{
+ "AREAID":"101080411",
+ "NAMECN":"四子王旗"
+ },
+ "丰镇":{
+ "AREAID":"101080412",
+ "NAMECN":"丰镇"
+ }
+ },
+ "通辽":{
+ "通辽":{
+ "AREAID":"101080501",
+ "NAMECN":"通辽"
+ },
+ "舍伯吐":{
+ "AREAID":"101080502",
+ "NAMECN":"舍伯吐"
+ },
+ "科左中旗":{
+ "AREAID":"101080503",
+ "NAMECN":"科左中旗"
+ },
+ "科左后旗":{
+ "AREAID":"101080504",
+ "NAMECN":"科左后旗"
+ },
+ "青龙山":{
+ "AREAID":"101080505",
+ "NAMECN":"青龙山"
+ },
+ "开鲁":{
+ "AREAID":"101080506",
+ "NAMECN":"开鲁"
+ },
+ "库伦":{
+ "AREAID":"101080507",
+ "NAMECN":"库伦"
+ },
+ "奈曼":{
+ "AREAID":"101080508",
+ "NAMECN":"奈曼"
+ },
+ "扎鲁特":{
+ "AREAID":"101080509",
+ "NAMECN":"扎鲁特"
+ },
+ "科尔沁":{
+ "AREAID":"101080510",
+ "NAMECN":"科尔沁"
+ },
+ "巴雅尔吐胡硕":{
+ "AREAID":"101080511",
+ "NAMECN":"巴雅尔吐胡硕"
+ },
+ "霍林郭勒":{
+ "AREAID":"101080512",
+ "NAMECN":"霍林郭勒"
+ }
+ },
+ "赤峰":{
+ "赤峰":{
+ "AREAID":"101080601",
+ "NAMECN":"赤峰"
+ },
+ "红山":{
+ "AREAID":"101080602",
+ "NAMECN":"红山"
+ },
+ "阿鲁旗":{
+ "AREAID":"101080603",
+ "NAMECN":"阿鲁旗"
+ },
+ "巴林左旗":{
+ "AREAID":"101080605",
+ "NAMECN":"巴林左旗"
+ },
+ "巴林右旗":{
+ "AREAID":"101080606",
+ "NAMECN":"巴林右旗"
+ },
+ "林西":{
+ "AREAID":"101080607",
+ "NAMECN":"林西"
+ },
+ "克什克腾":{
+ "AREAID":"101080608",
+ "NAMECN":"克什克腾"
+ },
+ "翁牛特":{
+ "AREAID":"101080609",
+ "NAMECN":"翁牛特"
+ },
+ "岗子":{
+ "AREAID":"101080610",
+ "NAMECN":"岗子"
+ },
+ "喀喇沁":{
+ "AREAID":"101080611",
+ "NAMECN":"喀喇沁"
+ },
+ "八里罕":{
+ "AREAID":"101080612",
+ "NAMECN":"八里罕"
+ },
+ "宁城":{
+ "AREAID":"101080613",
+ "NAMECN":"宁城"
+ },
+ "敖汉":{
+ "AREAID":"101080614",
+ "NAMECN":"敖汉"
+ },
+ "元宝山":{
+ "AREAID":"101080616",
+ "NAMECN":"元宝山"
+ },
+ "松山":{
+ "AREAID":"101080617",
+ "NAMECN":"松山"
+ },
+ "富河":{
+ "AREAID":"101080618",
+ "NAMECN":"富河"
+ },
+ "宝国图":{
+ "AREAID":"101080619",
+ "NAMECN":"宝国图"
+ }
+ },
+ "鄂尔多斯":{
+ "鄂尔多斯":{
+ "AREAID":"101080701",
+ "NAMECN":"鄂尔多斯"
+ },
+ "达拉特":{
+ "AREAID":"101080703",
+ "NAMECN":"达拉特"
+ },
+ "准格尔":{
+ "AREAID":"101080704",
+ "NAMECN":"准格尔"
+ },
+ "鄂前旗":{
+ "AREAID":"101080705",
+ "NAMECN":"鄂前旗"
+ },
+ "河南":{
+ "AREAID":"101080706",
+ "NAMECN":"河南"
+ },
+ "伊和乌素":{
+ "AREAID":"101080707",
+ "NAMECN":"伊和乌素"
+ },
+ "鄂托克":{
+ "AREAID":"101080708",
+ "NAMECN":"鄂托克"
+ },
+ "杭锦旗":{
+ "AREAID":"101080709",
+ "NAMECN":"杭锦旗"
+ },
+ "乌审旗":{
+ "AREAID":"101080710",
+ "NAMECN":"乌审旗"
+ },
+ "伊金霍洛":{
+ "AREAID":"101080711",
+ "NAMECN":"伊金霍洛"
+ },
+ "乌审召":{
+ "AREAID":"101080712",
+ "NAMECN":"乌审召"
+ },
+ "东胜":{
+ "AREAID":"101080713",
+ "NAMECN":"东胜"
+ },
+ "康巴什":{
+ "AREAID":"101080714",
+ "NAMECN":"康巴什"
+ }
+ },
+ "巴彦淖尔":{
+ "临河":{
+ "AREAID":"101080801",
+ "NAMECN":"临河"
+ },
+ "五原":{
+ "AREAID":"101080802",
+ "NAMECN":"五原"
+ },
+ "磴口":{
+ "AREAID":"101080803",
+ "NAMECN":"磴口"
+ },
+ "乌前旗":{
+ "AREAID":"101080804",
+ "NAMECN":"乌前旗"
+ },
+ "大佘太":{
+ "AREAID":"101080805",
+ "NAMECN":"大佘太"
+ },
+ "乌中旗":{
+ "AREAID":"101080806",
+ "NAMECN":"乌中旗"
+ },
+ "乌后旗":{
+ "AREAID":"101080807",
+ "NAMECN":"乌后旗"
+ },
+ "海力素":{
+ "AREAID":"101080808",
+ "NAMECN":"海力素"
+ },
+ "那仁宝力格":{
+ "AREAID":"101080809",
+ "NAMECN":"那仁宝力格"
+ },
+ "杭锦后旗":{
+ "AREAID":"101080810",
+ "NAMECN":"杭锦后旗"
+ },
+ "巴彦淖尔":{
+ "AREAID":"101080811",
+ "NAMECN":"巴彦淖尔"
+ }
+ },
+ "锡林郭勒":{
+ "锡林浩特":{
+ "AREAID":"101080901",
+ "NAMECN":"锡林浩特"
+ },
+ "锡林郭勒":{
+ "AREAID":"101080902",
+ "NAMECN":"锡林郭勒"
+ },
+ "二连浩特":{
+ "AREAID":"101080903",
+ "NAMECN":"二连浩特"
+ },
+ "阿巴嘎":{
+ "AREAID":"101080904",
+ "NAMECN":"阿巴嘎"
+ },
+ "苏左旗":{
+ "AREAID":"101080906",
+ "NAMECN":"苏左旗"
+ },
+ "苏右旗":{
+ "AREAID":"101080907",
+ "NAMECN":"苏右旗"
+ },
+ "朱日和":{
+ "AREAID":"101080908",
+ "NAMECN":"朱日和"
+ },
+ "东乌旗":{
+ "AREAID":"101080909",
+ "NAMECN":"东乌旗"
+ },
+ "西乌旗":{
+ "AREAID":"101080910",
+ "NAMECN":"西乌旗"
+ },
+ "太仆寺":{
+ "AREAID":"101080911",
+ "NAMECN":"太仆寺"
+ },
+ "镶黄旗":{
+ "AREAID":"101080912",
+ "NAMECN":"镶黄旗"
+ },
+ "正镶白旗":{
+ "AREAID":"101080913",
+ "NAMECN":"正镶白旗"
+ },
+ "正蓝旗":{
+ "AREAID":"101080914",
+ "NAMECN":"正蓝旗"
+ },
+ "多伦":{
+ "AREAID":"101080915",
+ "NAMECN":"多伦"
+ },
+ "博克图":{
+ "AREAID":"101080916",
+ "NAMECN":"博克图"
+ },
+ "乌拉盖":{
+ "AREAID":"101080917",
+ "NAMECN":"乌拉盖"
+ }
+ },
+ "呼伦贝尔":{
+ "海拉尔":{
+ "AREAID":"101081001",
+ "NAMECN":"海拉尔"
+ },
+ "小二沟":{
+ "AREAID":"101081002",
+ "NAMECN":"小二沟"
+ },
+ "阿荣旗":{
+ "AREAID":"101081003",
+ "NAMECN":"阿荣旗"
+ },
+ "莫力达瓦":{
+ "AREAID":"101081004",
+ "NAMECN":"莫力达瓦"
+ },
+ "鄂伦春旗":{
+ "AREAID":"101081005",
+ "NAMECN":"鄂伦春旗"
+ },
+ "鄂温克旗":{
+ "AREAID":"101081006",
+ "NAMECN":"鄂温克旗"
+ },
+ "陈旗":{
+ "AREAID":"101081007",
+ "NAMECN":"陈旗"
+ },
+ "新左旗":{
+ "AREAID":"101081008",
+ "NAMECN":"新左旗"
+ },
+ "新右旗":{
+ "AREAID":"101081009",
+ "NAMECN":"新右旗"
+ },
+ "满洲里":{
+ "AREAID":"101081010",
+ "NAMECN":"满洲里"
+ },
+ "牙克石":{
+ "AREAID":"101081011",
+ "NAMECN":"牙克石"
+ },
+ "扎兰屯":{
+ "AREAID":"101081012",
+ "NAMECN":"扎兰屯"
+ },
+ "呼伦贝尔":{
+ "AREAID":"101081013",
+ "NAMECN":"呼伦贝尔"
+ },
+ "额尔古纳":{
+ "AREAID":"101081014",
+ "NAMECN":"额尔古纳"
+ },
+ "根河":{
+ "AREAID":"101081015",
+ "NAMECN":"根河"
+ },
+ "图里河":{
+ "AREAID":"101081016",
+ "NAMECN":"图里河"
+ },
+ "扎赉诺尔":{
+ "AREAID":"101081017",
+ "NAMECN":"扎赉诺尔"
+ }
+ },
+ "兴安盟":{
+ "乌兰浩特":{
+ "AREAID":"101081101",
+ "NAMECN":"乌兰浩特"
+ },
+ "阿尔山":{
+ "AREAID":"101081102",
+ "NAMECN":"阿尔山"
+ },
+ "科右中旗":{
+ "AREAID":"101081103",
+ "NAMECN":"科右中旗"
+ },
+ "胡尔勒":{
+ "AREAID":"101081104",
+ "NAMECN":"胡尔勒"
+ },
+ "扎赉特":{
+ "AREAID":"101081105",
+ "NAMECN":"扎赉特"
+ },
+ "索伦":{
+ "AREAID":"101081106",
+ "NAMECN":"索伦"
+ },
+ "突泉":{
+ "AREAID":"101081107",
+ "NAMECN":"突泉"
+ },
+ "兴安盟":{
+ "AREAID":"101081108",
+ "NAMECN":"兴安盟"
+ },
+ "科右前旗":{
+ "AREAID":"101081109",
+ "NAMECN":"科右前旗"
+ },
+ "高力板":{
+ "AREAID":"101081110",
+ "NAMECN":"高力板"
+ }
+ },
+ "阿拉善盟":{
+ "阿左旗":{
+ "AREAID":"101081201",
+ "NAMECN":"阿左旗"
+ },
+ "阿右旗":{
+ "AREAID":"101081202",
+ "NAMECN":"阿右旗"
+ },
+ "额济纳":{
+ "AREAID":"101081203",
+ "NAMECN":"额济纳"
+ },
+ "拐子湖":{
+ "AREAID":"101081204",
+ "NAMECN":"拐子湖"
+ },
+ "吉兰太":{
+ "AREAID":"101081205",
+ "NAMECN":"吉兰太"
+ },
+ "巴彦诺日公":{
+ "AREAID":"101081209",
+ "NAMECN":"巴彦诺日公"
+ },
+ "雅布赖":{
+ "AREAID":"101081210",
+ "NAMECN":"雅布赖"
+ },
+ "乌斯太":{
+ "AREAID":"101081211",
+ "NAMECN":"乌斯太"
+ },
+ "孪井滩":{
+ "AREAID":"101081212",
+ "NAMECN":"孪井滩"
+ },
+ "阿拉善盟":{
+ "AREAID":"101081213",
+ "NAMECN":"阿拉善盟"
+ }
+ }
+ },
+ "河北":{
+ "石家庄":{
+ "石家庄":{
+ "AREAID":"101090101",
+ "NAMECN":"石家庄"
+ },
+ "井陉":{
+ "AREAID":"101090102",
+ "NAMECN":"井陉"
+ },
+ "正定":{
+ "AREAID":"101090103",
+ "NAMECN":"正定"
+ },
+ "栾城":{
+ "AREAID":"101090104",
+ "NAMECN":"栾城"
+ },
+ "行唐":{
+ "AREAID":"101090105",
+ "NAMECN":"行唐"
+ },
+ "灵寿":{
+ "AREAID":"101090106",
+ "NAMECN":"灵寿"
+ },
+ "高邑":{
+ "AREAID":"101090107",
+ "NAMECN":"高邑"
+ },
+ "深泽":{
+ "AREAID":"101090108",
+ "NAMECN":"深泽"
+ },
+ "赞皇":{
+ "AREAID":"101090109",
+ "NAMECN":"赞皇"
+ },
+ "无极":{
+ "AREAID":"101090110",
+ "NAMECN":"无极"
+ },
+ "平山":{
+ "AREAID":"101090111",
+ "NAMECN":"平山"
+ },
+ "元氏":{
+ "AREAID":"101090112",
+ "NAMECN":"元氏"
+ },
+ "赵县":{
+ "AREAID":"101090113",
+ "NAMECN":"赵县"
+ },
+ "辛集":{
+ "AREAID":"101090114",
+ "NAMECN":"辛集"
+ },
+ "藁城":{
+ "AREAID":"101090115",
+ "NAMECN":"藁城"
+ },
+ "晋州":{
+ "AREAID":"101090116",
+ "NAMECN":"晋州"
+ },
+ "新乐":{
+ "AREAID":"101090117",
+ "NAMECN":"新乐"
+ },
+ "鹿泉":{
+ "AREAID":"101090118",
+ "NAMECN":"鹿泉"
+ },
+ "长安":{
+ "AREAID":"101090119",
+ "NAMECN":"长安"
+ },
+ "桥西":{
+ "AREAID":"101090120",
+ "NAMECN":"桥西"
+ },
+ "新华":{
+ "AREAID":"101090121",
+ "NAMECN":"新华"
+ },
+ "井陉矿区":{
+ "AREAID":"101090122",
+ "NAMECN":"井陉矿区"
+ },
+ "裕华":{
+ "AREAID":"101090123",
+ "NAMECN":"裕华"
+ }
+ },
+ "保定":{
+ "保定":{
+ "AREAID":"101090201",
+ "NAMECN":"保定"
+ },
+ "满城":{
+ "AREAID":"101090202",
+ "NAMECN":"满城"
+ },
+ "阜平":{
+ "AREAID":"101090203",
+ "NAMECN":"阜平"
+ },
+ "徐水":{
+ "AREAID":"101090204",
+ "NAMECN":"徐水"
+ },
+ "唐县":{
+ "AREAID":"101090205",
+ "NAMECN":"唐县"
+ },
+ "高阳":{
+ "AREAID":"101090206",
+ "NAMECN":"高阳"
+ },
+ "竞秀":{
+ "AREAID":"101090208",
+ "NAMECN":"竞秀"
+ },
+ "涞源":{
+ "AREAID":"101090209",
+ "NAMECN":"涞源"
+ },
+ "望都":{
+ "AREAID":"101090210",
+ "NAMECN":"望都"
+ },
+ "易县":{
+ "AREAID":"101090212",
+ "NAMECN":"易县"
+ },
+ "莲池":{
+ "AREAID":"101090213",
+ "NAMECN":"莲池"
+ },
+ "曲阳":{
+ "AREAID":"101090214",
+ "NAMECN":"曲阳"
+ },
+ "蠡县":{
+ "AREAID":"101090215",
+ "NAMECN":"蠡县"
+ },
+ "顺平":{
+ "AREAID":"101090216",
+ "NAMECN":"顺平"
+ },
+ "涿州":{
+ "AREAID":"101090218",
+ "NAMECN":"涿州"
+ },
+ "定州":{
+ "AREAID":"101090219",
+ "NAMECN":"定州"
+ },
+ "安国":{
+ "AREAID":"101090220",
+ "NAMECN":"安国"
+ },
+ "高碑店":{
+ "AREAID":"101090221",
+ "NAMECN":"高碑店"
+ },
+ "涞水":{
+ "AREAID":"101090222",
+ "NAMECN":"涞水"
+ },
+ "定兴":{
+ "AREAID":"101090223",
+ "NAMECN":"定兴"
+ },
+ "清苑":{
+ "AREAID":"101090224",
+ "NAMECN":"清苑"
+ },
+ "博野":{
+ "AREAID":"101090225",
+ "NAMECN":"博野"
+ }
+ },
+ "张家口":{
+ "张家口":{
+ "AREAID":"101090301",
+ "NAMECN":"张家口"
+ },
+ "宣化":{
+ "AREAID":"101090302",
+ "NAMECN":"宣化"
+ },
+ "张北":{
+ "AREAID":"101090303",
+ "NAMECN":"张北"
+ },
+ "康保":{
+ "AREAID":"101090304",
+ "NAMECN":"康保"
+ },
+ "沽源":{
+ "AREAID":"101090305",
+ "NAMECN":"沽源"
+ },
+ "尚义":{
+ "AREAID":"101090306",
+ "NAMECN":"尚义"
+ },
+ "蔚县":{
+ "AREAID":"101090307",
+ "NAMECN":"蔚县"
+ },
+ "阳原":{
+ "AREAID":"101090308",
+ "NAMECN":"阳原"
+ },
+ "怀安":{
+ "AREAID":"101090309",
+ "NAMECN":"怀安"
+ },
+ "万全":{
+ "AREAID":"101090310",
+ "NAMECN":"万全"
+ },
+ "怀来":{
+ "AREAID":"101090311",
+ "NAMECN":"怀来"
+ },
+ "涿鹿":{
+ "AREAID":"101090312",
+ "NAMECN":"涿鹿"
+ },
+ "赤城":{
+ "AREAID":"101090313",
+ "NAMECN":"赤城"
+ },
+ "崇礼":{
+ "AREAID":"101090314",
+ "NAMECN":"崇礼"
+ },
+ "桥东":{
+ "AREAID":"101090315",
+ "NAMECN":"桥东"
+ },
+ "桥西":{
+ "AREAID":"101090316",
+ "NAMECN":"桥西"
+ },
+ "下花园":{
+ "AREAID":"101090317",
+ "NAMECN":"下花园"
+ }
+ },
+ "承德":{
+ "双桥":{
+ "AREAID":"101090401",
+ "NAMECN":"双桥"
+ },
+ "承德":{
+ "AREAID":"101090402",
+ "NAMECN":"承德"
+ },
+ "承德县":{
+ "AREAID":"101090403",
+ "NAMECN":"承德县"
+ },
+ "兴隆":{
+ "AREAID":"101090404",
+ "NAMECN":"兴隆"
+ },
+ "平泉":{
+ "AREAID":"101090405",
+ "NAMECN":"平泉"
+ },
+ "滦平":{
+ "AREAID":"101090406",
+ "NAMECN":"滦平"
+ },
+ "隆化":{
+ "AREAID":"101090407",
+ "NAMECN":"隆化"
+ },
+ "丰宁":{
+ "AREAID":"101090408",
+ "NAMECN":"丰宁"
+ },
+ "宽城":{
+ "AREAID":"101090409",
+ "NAMECN":"宽城"
+ },
+ "围场":{
+ "AREAID":"101090410",
+ "NAMECN":"围场"
+ },
+ "双滦":{
+ "AREAID":"101090411",
+ "NAMECN":"双滦"
+ },
+ "鹰手营子矿":{
+ "AREAID":"101090412",
+ "NAMECN":"鹰手营子矿"
+ }
+ },
+ "唐山":{
+ "唐山":{
+ "AREAID":"101090501",
+ "NAMECN":"唐山"
+ },
+ "丰南":{
+ "AREAID":"101090502",
+ "NAMECN":"丰南"
+ },
+ "丰润":{
+ "AREAID":"101090503",
+ "NAMECN":"丰润"
+ },
+ "滦县":{
+ "AREAID":"101090504",
+ "NAMECN":"滦县"
+ },
+ "滦南":{
+ "AREAID":"101090505",
+ "NAMECN":"滦南"
+ },
+ "乐亭":{
+ "AREAID":"101090506",
+ "NAMECN":"乐亭"
+ },
+ "迁西":{
+ "AREAID":"101090507",
+ "NAMECN":"迁西"
+ },
+ "玉田":{
+ "AREAID":"101090508",
+ "NAMECN":"玉田"
+ },
+ "曹妃甸":{
+ "AREAID":"101090509",
+ "NAMECN":"曹妃甸"
+ },
+ "遵化":{
+ "AREAID":"101090510",
+ "NAMECN":"遵化"
+ },
+ "迁安":{
+ "AREAID":"101090511",
+ "NAMECN":"迁安"
+ },
+ "路南":{
+ "AREAID":"101090513",
+ "NAMECN":"路南"
+ },
+ "路北":{
+ "AREAID":"101090514",
+ "NAMECN":"路北"
+ },
+ "古冶":{
+ "AREAID":"101090515",
+ "NAMECN":"古冶"
+ },
+ "开平":{
+ "AREAID":"101090516",
+ "NAMECN":"开平"
+ }
+ },
+ "廊坊":{
+ "廊坊":{
+ "AREAID":"101090601",
+ "NAMECN":"廊坊"
+ },
+ "固安":{
+ "AREAID":"101090602",
+ "NAMECN":"固安"
+ },
+ "永清":{
+ "AREAID":"101090603",
+ "NAMECN":"永清"
+ },
+ "香河":{
+ "AREAID":"101090604",
+ "NAMECN":"香河"
+ },
+ "大城":{
+ "AREAID":"101090605",
+ "NAMECN":"大城"
+ },
+ "文安":{
+ "AREAID":"101090606",
+ "NAMECN":"文安"
+ },
+ "大厂":{
+ "AREAID":"101090607",
+ "NAMECN":"大厂"
+ },
+ "霸州":{
+ "AREAID":"101090608",
+ "NAMECN":"霸州"
+ },
+ "三河":{
+ "AREAID":"101090609",
+ "NAMECN":"三河"
+ },
+ "安次":{
+ "AREAID":"101090610",
+ "NAMECN":"安次"
+ },
+ "广阳":{
+ "AREAID":"101090611",
+ "NAMECN":"广阳"
+ }
+ },
+ "沧州":{
+ "沧州":{
+ "AREAID":"101090701",
+ "NAMECN":"沧州"
+ },
+ "青县":{
+ "AREAID":"101090702",
+ "NAMECN":"青县"
+ },
+ "东光":{
+ "AREAID":"101090703",
+ "NAMECN":"东光"
+ },
+ "海兴":{
+ "AREAID":"101090704",
+ "NAMECN":"海兴"
+ },
+ "盐山":{
+ "AREAID":"101090705",
+ "NAMECN":"盐山"
+ },
+ "肃宁":{
+ "AREAID":"101090706",
+ "NAMECN":"肃宁"
+ },
+ "南皮":{
+ "AREAID":"101090707",
+ "NAMECN":"南皮"
+ },
+ "吴桥":{
+ "AREAID":"101090708",
+ "NAMECN":"吴桥"
+ },
+ "献县":{
+ "AREAID":"101090709",
+ "NAMECN":"献县"
+ },
+ "孟村":{
+ "AREAID":"101090710",
+ "NAMECN":"孟村"
+ },
+ "泊头":{
+ "AREAID":"101090711",
+ "NAMECN":"泊头"
+ },
+ "任丘":{
+ "AREAID":"101090712",
+ "NAMECN":"任丘"
+ },
+ "黄骅":{
+ "AREAID":"101090713",
+ "NAMECN":"黄骅"
+ },
+ "河间":{
+ "AREAID":"101090714",
+ "NAMECN":"河间"
+ },
+ "新华":{
+ "AREAID":"101090715",
+ "NAMECN":"新华"
+ },
+ "沧县":{
+ "AREAID":"101090716",
+ "NAMECN":"沧县"
+ },
+ "运河":{
+ "AREAID":"101090717",
+ "NAMECN":"运河"
+ }
+ },
+ "衡水":{
+ "衡水":{
+ "AREAID":"101090801",
+ "NAMECN":"衡水"
+ },
+ "枣强":{
+ "AREAID":"101090802",
+ "NAMECN":"枣强"
+ },
+ "武邑":{
+ "AREAID":"101090803",
+ "NAMECN":"武邑"
+ },
+ "武强":{
+ "AREAID":"101090804",
+ "NAMECN":"武强"
+ },
+ "饶阳":{
+ "AREAID":"101090805",
+ "NAMECN":"饶阳"
+ },
+ "安平":{
+ "AREAID":"101090806",
+ "NAMECN":"安平"
+ },
+ "故城":{
+ "AREAID":"101090807",
+ "NAMECN":"故城"
+ },
+ "景县":{
+ "AREAID":"101090808",
+ "NAMECN":"景县"
+ },
+ "阜城":{
+ "AREAID":"101090809",
+ "NAMECN":"阜城"
+ },
+ "冀州":{
+ "AREAID":"101090810",
+ "NAMECN":"冀州"
+ },
+ "深州":{
+ "AREAID":"101090811",
+ "NAMECN":"深州"
+ },
+ "桃城":{
+ "AREAID":"101090812",
+ "NAMECN":"桃城"
+ }
+ },
+ "邢台":{
+ "邢台":{
+ "AREAID":"101090901",
+ "NAMECN":"邢台"
+ },
+ "临城":{
+ "AREAID":"101090902",
+ "NAMECN":"临城"
+ },
+ "桥东":{
+ "AREAID":"101090903",
+ "NAMECN":"桥东"
+ },
+ "内丘":{
+ "AREAID":"101090904",
+ "NAMECN":"内丘"
+ },
+ "柏乡":{
+ "AREAID":"101090905",
+ "NAMECN":"柏乡"
+ },
+ "隆尧":{
+ "AREAID":"101090906",
+ "NAMECN":"隆尧"
+ },
+ "南和":{
+ "AREAID":"101090907",
+ "NAMECN":"南和"
+ },
+ "宁晋":{
+ "AREAID":"101090908",
+ "NAMECN":"宁晋"
+ },
+ "巨鹿":{
+ "AREAID":"101090909",
+ "NAMECN":"巨鹿"
+ },
+ "新河":{
+ "AREAID":"101090910",
+ "NAMECN":"新河"
+ },
+ "广宗":{
+ "AREAID":"101090911",
+ "NAMECN":"广宗"
+ },
+ "平乡":{
+ "AREAID":"101090912",
+ "NAMECN":"平乡"
+ },
+ "威县":{
+ "AREAID":"101090913",
+ "NAMECN":"威县"
+ },
+ "清河":{
+ "AREAID":"101090914",
+ "NAMECN":"清河"
+ },
+ "临西":{
+ "AREAID":"101090915",
+ "NAMECN":"临西"
+ },
+ "南宫":{
+ "AREAID":"101090916",
+ "NAMECN":"南宫"
+ },
+ "沙河":{
+ "AREAID":"101090917",
+ "NAMECN":"沙河"
+ },
+ "任县":{
+ "AREAID":"101090918",
+ "NAMECN":"任县"
+ },
+ "桥西":{
+ "AREAID":"101090919",
+ "NAMECN":"桥西"
+ }
+ },
+ "邯郸":{
+ "邯郸":{
+ "AREAID":"101091001",
+ "NAMECN":"邯郸"
+ },
+ "峰峰":{
+ "AREAID":"101091002",
+ "NAMECN":"峰峰"
+ },
+ "临漳":{
+ "AREAID":"101091003",
+ "NAMECN":"临漳"
+ },
+ "成安":{
+ "AREAID":"101091004",
+ "NAMECN":"成安"
+ },
+ "大名":{
+ "AREAID":"101091005",
+ "NAMECN":"大名"
+ },
+ "涉县":{
+ "AREAID":"101091006",
+ "NAMECN":"涉县"
+ },
+ "磁县":{
+ "AREAID":"101091007",
+ "NAMECN":"磁县"
+ },
+ "肥乡":{
+ "AREAID":"101091008",
+ "NAMECN":"肥乡"
+ },
+ "永年":{
+ "AREAID":"101091009",
+ "NAMECN":"永年"
+ },
+ "邱县":{
+ "AREAID":"101091010",
+ "NAMECN":"邱县"
+ },
+ "鸡泽":{
+ "AREAID":"101091011",
+ "NAMECN":"鸡泽"
+ },
+ "广平":{
+ "AREAID":"101091012",
+ "NAMECN":"广平"
+ },
+ "馆陶":{
+ "AREAID":"101091013",
+ "NAMECN":"馆陶"
+ },
+ "魏县":{
+ "AREAID":"101091014",
+ "NAMECN":"魏县"
+ },
+ "曲周":{
+ "AREAID":"101091015",
+ "NAMECN":"曲周"
+ },
+ "武安":{
+ "AREAID":"101091016",
+ "NAMECN":"武安"
+ },
+ "邯山":{
+ "AREAID":"101091017",
+ "NAMECN":"邯山"
+ },
+ "丛台":{
+ "AREAID":"101091018",
+ "NAMECN":"丛台"
+ },
+ "复兴":{
+ "AREAID":"101091019",
+ "NAMECN":"复兴"
+ }
+ },
+ "秦皇岛":{
+ "秦皇岛":{
+ "AREAID":"101091101",
+ "NAMECN":"秦皇岛"
+ },
+ "青龙":{
+ "AREAID":"101091102",
+ "NAMECN":"青龙"
+ },
+ "昌黎":{
+ "AREAID":"101091103",
+ "NAMECN":"昌黎"
+ },
+ "抚宁":{
+ "AREAID":"101091104",
+ "NAMECN":"抚宁"
+ },
+ "卢龙":{
+ "AREAID":"101091105",
+ "NAMECN":"卢龙"
+ },
+ "北戴河":{
+ "AREAID":"101091106",
+ "NAMECN":"北戴河"
+ },
+ "海港":{
+ "AREAID":"101091107",
+ "NAMECN":"海港"
+ },
+ "山海关":{
+ "AREAID":"101091108",
+ "NAMECN":"山海关"
+ }
+ },
+ "雄安新区":{
+ "雄安新区":{
+ "AREAID":"101091201",
+ "NAMECN":"雄安新区"
+ },
+ "容城":{
+ "AREAID":"101091202",
+ "NAMECN":"容城"
+ },
+ "安新":{
+ "AREAID":"101091203",
+ "NAMECN":"安新"
+ },
+ "雄县":{
+ "AREAID":"101091204",
+ "NAMECN":"雄县"
+ }
+ }
+ },
+ "山西":{
+ "太原":{
+ "太原":{
+ "AREAID":"101100101",
+ "NAMECN":"太原"
+ },
+ "清徐":{
+ "AREAID":"101100102",
+ "NAMECN":"清徐"
+ },
+ "阳曲":{
+ "AREAID":"101100103",
+ "NAMECN":"阳曲"
+ },
+ "娄烦":{
+ "AREAID":"101100104",
+ "NAMECN":"娄烦"
+ },
+ "古交":{
+ "AREAID":"101100105",
+ "NAMECN":"古交"
+ },
+ "尖草坪区":{
+ "AREAID":"101100106",
+ "NAMECN":"尖草坪区"
+ },
+ "小店区":{
+ "AREAID":"101100107",
+ "NAMECN":"小店区"
+ },
+ "迎泽":{
+ "AREAID":"101100108",
+ "NAMECN":"迎泽"
+ },
+ "杏花岭":{
+ "AREAID":"101100109",
+ "NAMECN":"杏花岭"
+ },
+ "万柏林":{
+ "AREAID":"101100110",
+ "NAMECN":"万柏林"
+ },
+ "晋源":{
+ "AREAID":"101100111",
+ "NAMECN":"晋源"
+ }
+ },
+ "大同":{
+ "大同":{
+ "AREAID":"101100201",
+ "NAMECN":"大同"
+ },
+ "阳高":{
+ "AREAID":"101100202",
+ "NAMECN":"阳高"
+ },
+ "大同县":{
+ "AREAID":"101100203",
+ "NAMECN":"大同县"
+ },
+ "天镇":{
+ "AREAID":"101100204",
+ "NAMECN":"天镇"
+ },
+ "广灵":{
+ "AREAID":"101100205",
+ "NAMECN":"广灵"
+ },
+ "灵丘":{
+ "AREAID":"101100206",
+ "NAMECN":"灵丘"
+ },
+ "浑源":{
+ "AREAID":"101100207",
+ "NAMECN":"浑源"
+ },
+ "左云":{
+ "AREAID":"101100208",
+ "NAMECN":"左云"
+ },
+ "矿区":{
+ "AREAID":"101100209",
+ "NAMECN":"矿区"
+ },
+ "南郊":{
+ "AREAID":"101100210",
+ "NAMECN":"南郊"
+ },
+ "新荣":{
+ "AREAID":"101100211",
+ "NAMECN":"新荣"
+ }
+ },
+ "阳泉":{
+ "阳泉":{
+ "AREAID":"101100301",
+ "NAMECN":"阳泉"
+ },
+ "盂县":{
+ "AREAID":"101100302",
+ "NAMECN":"盂县"
+ },
+ "平定":{
+ "AREAID":"101100303",
+ "NAMECN":"平定"
+ },
+ "矿区":{
+ "AREAID":"101100304",
+ "NAMECN":"矿区"
+ },
+ "郊区":{
+ "AREAID":"101100305",
+ "NAMECN":"郊区"
+ }
+ },
+ "晋中":{
+ "晋中":{
+ "AREAID":"101100401",
+ "NAMECN":"晋中"
+ },
+ "榆次":{
+ "AREAID":"101100402",
+ "NAMECN":"榆次"
+ },
+ "榆社":{
+ "AREAID":"101100403",
+ "NAMECN":"榆社"
+ },
+ "左权":{
+ "AREAID":"101100404",
+ "NAMECN":"左权"
+ },
+ "和顺":{
+ "AREAID":"101100405",
+ "NAMECN":"和顺"
+ },
+ "昔阳":{
+ "AREAID":"101100406",
+ "NAMECN":"昔阳"
+ },
+ "寿阳":{
+ "AREAID":"101100407",
+ "NAMECN":"寿阳"
+ },
+ "太谷":{
+ "AREAID":"101100408",
+ "NAMECN":"太谷"
+ },
+ "祁县":{
+ "AREAID":"101100409",
+ "NAMECN":"祁县"
+ },
+ "平遥":{
+ "AREAID":"101100410",
+ "NAMECN":"平遥"
+ },
+ "灵石":{
+ "AREAID":"101100411",
+ "NAMECN":"灵石"
+ },
+ "介休":{
+ "AREAID":"101100412",
+ "NAMECN":"介休"
+ }
+ },
+ "长治":{
+ "长治":{
+ "AREAID":"101100501",
+ "NAMECN":"长治"
+ },
+ "黎城":{
+ "AREAID":"101100502",
+ "NAMECN":"黎城"
+ },
+ "屯留":{
+ "AREAID":"101100503",
+ "NAMECN":"屯留"
+ },
+ "潞城":{
+ "AREAID":"101100504",
+ "NAMECN":"潞城"
+ },
+ "襄垣":{
+ "AREAID":"101100505",
+ "NAMECN":"襄垣"
+ },
+ "平顺":{
+ "AREAID":"101100506",
+ "NAMECN":"平顺"
+ },
+ "武乡":{
+ "AREAID":"101100507",
+ "NAMECN":"武乡"
+ },
+ "沁县":{
+ "AREAID":"101100508",
+ "NAMECN":"沁县"
+ },
+ "长子":{
+ "AREAID":"101100509",
+ "NAMECN":"长子"
+ },
+ "沁源":{
+ "AREAID":"101100510",
+ "NAMECN":"沁源"
+ },
+ "壶关":{
+ "AREAID":"101100511",
+ "NAMECN":"壶关"
+ },
+ "郊区":{
+ "AREAID":"101100512",
+ "NAMECN":"郊区"
+ }
+ },
+ "晋城":{
+ "晋城":{
+ "AREAID":"101100601",
+ "NAMECN":"晋城"
+ },
+ "沁水":{
+ "AREAID":"101100602",
+ "NAMECN":"沁水"
+ },
+ "阳城":{
+ "AREAID":"101100603",
+ "NAMECN":"阳城"
+ },
+ "陵川":{
+ "AREAID":"101100604",
+ "NAMECN":"陵川"
+ },
+ "高平":{
+ "AREAID":"101100605",
+ "NAMECN":"高平"
+ },
+ "泽州":{
+ "AREAID":"101100606",
+ "NAMECN":"泽州"
+ }
+ },
+ "临汾":{
+ "临汾":{
+ "AREAID":"101100701",
+ "NAMECN":"临汾"
+ },
+ "曲沃":{
+ "AREAID":"101100702",
+ "NAMECN":"曲沃"
+ },
+ "永和":{
+ "AREAID":"101100703",
+ "NAMECN":"永和"
+ },
+ "隰县":{
+ "AREAID":"101100704",
+ "NAMECN":"隰县"
+ },
+ "大宁":{
+ "AREAID":"101100705",
+ "NAMECN":"大宁"
+ },
+ "吉县":{
+ "AREAID":"101100706",
+ "NAMECN":"吉县"
+ },
+ "襄汾":{
+ "AREAID":"101100707",
+ "NAMECN":"襄汾"
+ },
+ "蒲县":{
+ "AREAID":"101100708",
+ "NAMECN":"蒲县"
+ },
+ "汾西":{
+ "AREAID":"101100709",
+ "NAMECN":"汾西"
+ },
+ "洪洞":{
+ "AREAID":"101100710",
+ "NAMECN":"洪洞"
+ },
+ "霍州":{
+ "AREAID":"101100711",
+ "NAMECN":"霍州"
+ },
+ "乡宁":{
+ "AREAID":"101100712",
+ "NAMECN":"乡宁"
+ },
+ "翼城":{
+ "AREAID":"101100713",
+ "NAMECN":"翼城"
+ },
+ "侯马":{
+ "AREAID":"101100714",
+ "NAMECN":"侯马"
+ },
+ "浮山":{
+ "AREAID":"101100715",
+ "NAMECN":"浮山"
+ },
+ "安泽":{
+ "AREAID":"101100716",
+ "NAMECN":"安泽"
+ },
+ "古县":{
+ "AREAID":"101100717",
+ "NAMECN":"古县"
+ },
+ "尧都":{
+ "AREAID":"101100718",
+ "NAMECN":"尧都"
+ }
+ },
+ "运城":{
+ "运城":{
+ "AREAID":"101100801",
+ "NAMECN":"运城"
+ },
+ "临猗":{
+ "AREAID":"101100802",
+ "NAMECN":"临猗"
+ },
+ "稷山":{
+ "AREAID":"101100803",
+ "NAMECN":"稷山"
+ },
+ "万荣":{
+ "AREAID":"101100804",
+ "NAMECN":"万荣"
+ },
+ "河津":{
+ "AREAID":"101100805",
+ "NAMECN":"河津"
+ },
+ "新绛":{
+ "AREAID":"101100806",
+ "NAMECN":"新绛"
+ },
+ "绛县":{
+ "AREAID":"101100807",
+ "NAMECN":"绛县"
+ },
+ "闻喜":{
+ "AREAID":"101100808",
+ "NAMECN":"闻喜"
+ },
+ "垣曲":{
+ "AREAID":"101100809",
+ "NAMECN":"垣曲"
+ },
+ "永济":{
+ "AREAID":"101100810",
+ "NAMECN":"永济"
+ },
+ "芮城":{
+ "AREAID":"101100811",
+ "NAMECN":"芮城"
+ },
+ "夏县":{
+ "AREAID":"101100812",
+ "NAMECN":"夏县"
+ },
+ "平陆":{
+ "AREAID":"101100813",
+ "NAMECN":"平陆"
+ },
+ "盐湖":{
+ "AREAID":"101100814",
+ "NAMECN":"盐湖"
+ }
+ },
+ "朔州":{
+ "朔州":{
+ "AREAID":"101100901",
+ "NAMECN":"朔州"
+ },
+ "平鲁":{
+ "AREAID":"101100902",
+ "NAMECN":"平鲁"
+ },
+ "山阴":{
+ "AREAID":"101100903",
+ "NAMECN":"山阴"
+ },
+ "右玉":{
+ "AREAID":"101100904",
+ "NAMECN":"右玉"
+ },
+ "应县":{
+ "AREAID":"101100905",
+ "NAMECN":"应县"
+ },
+ "怀仁":{
+ "AREAID":"101100906",
+ "NAMECN":"怀仁"
+ },
+ "朔城":{
+ "AREAID":"101100907",
+ "NAMECN":"朔城"
+ }
+ },
+ "忻州":{
+ "忻州":{
+ "AREAID":"101101001",
+ "NAMECN":"忻州"
+ },
+ "定襄":{
+ "AREAID":"101101002",
+ "NAMECN":"定襄"
+ },
+ "五台县":{
+ "AREAID":"101101003",
+ "NAMECN":"五台县"
+ },
+ "河曲":{
+ "AREAID":"101101004",
+ "NAMECN":"河曲"
+ },
+ "偏关":{
+ "AREAID":"101101005",
+ "NAMECN":"偏关"
+ },
+ "神池":{
+ "AREAID":"101101006",
+ "NAMECN":"神池"
+ },
+ "宁武":{
+ "AREAID":"101101007",
+ "NAMECN":"宁武"
+ },
+ "代县":{
+ "AREAID":"101101008",
+ "NAMECN":"代县"
+ },
+ "繁峙":{
+ "AREAID":"101101009",
+ "NAMECN":"繁峙"
+ },
+ "五台山":{
+ "AREAID":"101101010",
+ "NAMECN":"五台山"
+ },
+ "保德":{
+ "AREAID":"101101011",
+ "NAMECN":"保德"
+ },
+ "静乐":{
+ "AREAID":"101101012",
+ "NAMECN":"静乐"
+ },
+ "岢岚":{
+ "AREAID":"101101013",
+ "NAMECN":"岢岚"
+ },
+ "五寨":{
+ "AREAID":"101101014",
+ "NAMECN":"五寨"
+ },
+ "原平":{
+ "AREAID":"101101015",
+ "NAMECN":"原平"
+ },
+ "忻府":{
+ "AREAID":"101101016",
+ "NAMECN":"忻府"
+ }
+ },
+ "吕梁":{
+ "吕梁":{
+ "AREAID":"101101100",
+ "NAMECN":"吕梁"
+ },
+ "离石":{
+ "AREAID":"101101101",
+ "NAMECN":"离石"
+ },
+ "临县":{
+ "AREAID":"101101102",
+ "NAMECN":"临县"
+ },
+ "兴县":{
+ "AREAID":"101101103",
+ "NAMECN":"兴县"
+ },
+ "岚县":{
+ "AREAID":"101101104",
+ "NAMECN":"岚县"
+ },
+ "柳林":{
+ "AREAID":"101101105",
+ "NAMECN":"柳林"
+ },
+ "石楼":{
+ "AREAID":"101101106",
+ "NAMECN":"石楼"
+ },
+ "方山":{
+ "AREAID":"101101107",
+ "NAMECN":"方山"
+ },
+ "交口":{
+ "AREAID":"101101108",
+ "NAMECN":"交口"
+ },
+ "中阳":{
+ "AREAID":"101101109",
+ "NAMECN":"中阳"
+ },
+ "孝义":{
+ "AREAID":"101101110",
+ "NAMECN":"孝义"
+ },
+ "汾阳":{
+ "AREAID":"101101111",
+ "NAMECN":"汾阳"
+ },
+ "文水":{
+ "AREAID":"101101112",
+ "NAMECN":"文水"
+ },
+ "交城":{
+ "AREAID":"101101113",
+ "NAMECN":"交城"
+ }
+ }
+ },
+ "陕西":{
+ "西安":{
+ "西安":{
+ "AREAID":"101110101",
+ "NAMECN":"西安"
+ },
+ "长安":{
+ "AREAID":"101110102",
+ "NAMECN":"长安"
+ },
+ "临潼":{
+ "AREAID":"101110103",
+ "NAMECN":"临潼"
+ },
+ "蓝田":{
+ "AREAID":"101110104",
+ "NAMECN":"蓝田"
+ },
+ "周至":{
+ "AREAID":"101110105",
+ "NAMECN":"周至"
+ },
+ "鄠邑":{
+ "AREAID":"101110106",
+ "NAMECN":"鄠邑"
+ },
+ "高陵":{
+ "AREAID":"101110107",
+ "NAMECN":"高陵"
+ },
+ "新城":{
+ "AREAID":"101110108",
+ "NAMECN":"新城"
+ },
+ "碑林":{
+ "AREAID":"101110109",
+ "NAMECN":"碑林"
+ },
+ "莲湖":{
+ "AREAID":"101110110",
+ "NAMECN":"莲湖"
+ },
+ "灞桥":{
+ "AREAID":"101110111",
+ "NAMECN":"灞桥"
+ },
+ "未央":{
+ "AREAID":"101110112",
+ "NAMECN":"未央"
+ },
+ "雁塔":{
+ "AREAID":"101110113",
+ "NAMECN":"雁塔"
+ },
+ "阎良":{
+ "AREAID":"101110114",
+ "NAMECN":"阎良"
+ }
+ },
+ "咸阳":{
+ "咸阳":{
+ "AREAID":"101110200",
+ "NAMECN":"咸阳"
+ },
+ "三原":{
+ "AREAID":"101110201",
+ "NAMECN":"三原"
+ },
+ "礼泉":{
+ "AREAID":"101110202",
+ "NAMECN":"礼泉"
+ },
+ "永寿":{
+ "AREAID":"101110203",
+ "NAMECN":"永寿"
+ },
+ "淳化":{
+ "AREAID":"101110204",
+ "NAMECN":"淳化"
+ },
+ "泾阳":{
+ "AREAID":"101110205",
+ "NAMECN":"泾阳"
+ },
+ "武功":{
+ "AREAID":"101110206",
+ "NAMECN":"武功"
+ },
+ "乾县":{
+ "AREAID":"101110207",
+ "NAMECN":"乾县"
+ },
+ "彬县":{
+ "AREAID":"101110208",
+ "NAMECN":"彬县"
+ },
+ "长武":{
+ "AREAID":"101110209",
+ "NAMECN":"长武"
+ },
+ "旬邑":{
+ "AREAID":"101110210",
+ "NAMECN":"旬邑"
+ },
+ "兴平":{
+ "AREAID":"101110211",
+ "NAMECN":"兴平"
+ },
+ "秦都":{
+ "AREAID":"101110212",
+ "NAMECN":"秦都"
+ },
+ "渭城":{
+ "AREAID":"101110213",
+ "NAMECN":"渭城"
+ }
+ },
+ "延安":{
+ "延安":{
+ "AREAID":"101110300",
+ "NAMECN":"延安"
+ },
+ "延长":{
+ "AREAID":"101110301",
+ "NAMECN":"延长"
+ },
+ "延川":{
+ "AREAID":"101110302",
+ "NAMECN":"延川"
+ },
+ "子长":{
+ "AREAID":"101110303",
+ "NAMECN":"子长"
+ },
+ "宜川":{
+ "AREAID":"101110304",
+ "NAMECN":"宜川"
+ },
+ "富县":{
+ "AREAID":"101110305",
+ "NAMECN":"富县"
+ },
+ "志丹":{
+ "AREAID":"101110306",
+ "NAMECN":"志丹"
+ },
+ "安塞":{
+ "AREAID":"101110307",
+ "NAMECN":"安塞"
+ },
+ "甘泉":{
+ "AREAID":"101110308",
+ "NAMECN":"甘泉"
+ },
+ "洛川":{
+ "AREAID":"101110309",
+ "NAMECN":"洛川"
+ },
+ "黄陵":{
+ "AREAID":"101110310",
+ "NAMECN":"黄陵"
+ },
+ "黄龙":{
+ "AREAID":"101110311",
+ "NAMECN":"黄龙"
+ },
+ "吴起":{
+ "AREAID":"101110312",
+ "NAMECN":"吴起"
+ },
+ "宝塔":{
+ "AREAID":"101110313",
+ "NAMECN":"宝塔"
+ }
+ },
+ "榆林":{
+ "榆林":{
+ "AREAID":"101110401",
+ "NAMECN":"榆林"
+ },
+ "府谷":{
+ "AREAID":"101110402",
+ "NAMECN":"府谷"
+ },
+ "神木":{
+ "AREAID":"101110403",
+ "NAMECN":"神木"
+ },
+ "佳县":{
+ "AREAID":"101110404",
+ "NAMECN":"佳县"
+ },
+ "定边":{
+ "AREAID":"101110405",
+ "NAMECN":"定边"
+ },
+ "靖边":{
+ "AREAID":"101110406",
+ "NAMECN":"靖边"
+ },
+ "横山":{
+ "AREAID":"101110407",
+ "NAMECN":"横山"
+ },
+ "米脂":{
+ "AREAID":"101110408",
+ "NAMECN":"米脂"
+ },
+ "子洲":{
+ "AREAID":"101110409",
+ "NAMECN":"子洲"
+ },
+ "绥德":{
+ "AREAID":"101110410",
+ "NAMECN":"绥德"
+ },
+ "吴堡":{
+ "AREAID":"101110411",
+ "NAMECN":"吴堡"
+ },
+ "清涧":{
+ "AREAID":"101110412",
+ "NAMECN":"清涧"
+ },
+ "榆阳":{
+ "AREAID":"101110413",
+ "NAMECN":"榆阳"
+ }
+ },
+ "渭南":{
+ "渭南":{
+ "AREAID":"101110501",
+ "NAMECN":"渭南"
+ },
+ "潼关":{
+ "AREAID":"101110503",
+ "NAMECN":"潼关"
+ },
+ "大荔":{
+ "AREAID":"101110504",
+ "NAMECN":"大荔"
+ },
+ "白水":{
+ "AREAID":"101110505",
+ "NAMECN":"白水"
+ },
+ "富平":{
+ "AREAID":"101110506",
+ "NAMECN":"富平"
+ },
+ "蒲城":{
+ "AREAID":"101110507",
+ "NAMECN":"蒲城"
+ },
+ "澄城":{
+ "AREAID":"101110508",
+ "NAMECN":"澄城"
+ },
+ "合阳":{
+ "AREAID":"101110509",
+ "NAMECN":"合阳"
+ },
+ "韩城":{
+ "AREAID":"101110510",
+ "NAMECN":"韩城"
+ },
+ "华阴":{
+ "AREAID":"101110511",
+ "NAMECN":"华阴"
+ },
+ "临渭":{
+ "AREAID":"101110512",
+ "NAMECN":"临渭"
+ },
+ "华州":{
+ "AREAID":"101110513",
+ "NAMECN":"华州"
+ }
+ },
+ "商洛":{
+ "商洛":{
+ "AREAID":"101110601",
+ "NAMECN":"商洛"
+ },
+ "洛南":{
+ "AREAID":"101110602",
+ "NAMECN":"洛南"
+ },
+ "柞水":{
+ "AREAID":"101110603",
+ "NAMECN":"柞水"
+ },
+ "商州":{
+ "AREAID":"101110604",
+ "NAMECN":"商州"
+ },
+ "镇安":{
+ "AREAID":"101110605",
+ "NAMECN":"镇安"
+ },
+ "丹凤":{
+ "AREAID":"101110606",
+ "NAMECN":"丹凤"
+ },
+ "商南":{
+ "AREAID":"101110607",
+ "NAMECN":"商南"
+ },
+ "山阳":{
+ "AREAID":"101110608",
+ "NAMECN":"山阳"
+ }
+ },
+ "安康":{
+ "安康":{
+ "AREAID":"101110701",
+ "NAMECN":"安康"
+ },
+ "紫阳":{
+ "AREAID":"101110702",
+ "NAMECN":"紫阳"
+ },
+ "石泉":{
+ "AREAID":"101110703",
+ "NAMECN":"石泉"
+ },
+ "汉阴":{
+ "AREAID":"101110704",
+ "NAMECN":"汉阴"
+ },
+ "旬阳":{
+ "AREAID":"101110705",
+ "NAMECN":"旬阳"
+ },
+ "岚皋":{
+ "AREAID":"101110706",
+ "NAMECN":"岚皋"
+ },
+ "平利":{
+ "AREAID":"101110707",
+ "NAMECN":"平利"
+ },
+ "白河":{
+ "AREAID":"101110708",
+ "NAMECN":"白河"
+ },
+ "镇坪":{
+ "AREAID":"101110709",
+ "NAMECN":"镇坪"
+ },
+ "宁陕":{
+ "AREAID":"101110710",
+ "NAMECN":"宁陕"
+ },
+ "汉滨":{
+ "AREAID":"101110711",
+ "NAMECN":"汉滨"
+ }
+ },
+ "汉中":{
+ "汉中":{
+ "AREAID":"101110801",
+ "NAMECN":"汉中"
+ },
+ "略阳":{
+ "AREAID":"101110802",
+ "NAMECN":"略阳"
+ },
+ "勉县":{
+ "AREAID":"101110803",
+ "NAMECN":"勉县"
+ },
+ "留坝":{
+ "AREAID":"101110804",
+ "NAMECN":"留坝"
+ },
+ "洋县":{
+ "AREAID":"101110805",
+ "NAMECN":"洋县"
+ },
+ "城固":{
+ "AREAID":"101110806",
+ "NAMECN":"城固"
+ },
+ "西乡":{
+ "AREAID":"101110807",
+ "NAMECN":"西乡"
+ },
+ "佛坪":{
+ "AREAID":"101110808",
+ "NAMECN":"佛坪"
+ },
+ "宁强":{
+ "AREAID":"101110809",
+ "NAMECN":"宁强"
+ },
+ "南郑":{
+ "AREAID":"101110810",
+ "NAMECN":"南郑"
+ },
+ "镇巴":{
+ "AREAID":"101110811",
+ "NAMECN":"镇巴"
+ },
+ "汉台":{
+ "AREAID":"101110812",
+ "NAMECN":"汉台"
+ }
+ },
+ "宝鸡":{
+ "宝鸡":{
+ "AREAID":"101110901",
+ "NAMECN":"宝鸡"
+ },
+ "渭滨":{
+ "AREAID":"101110902",
+ "NAMECN":"渭滨"
+ },
+ "千阳":{
+ "AREAID":"101110903",
+ "NAMECN":"千阳"
+ },
+ "麟游":{
+ "AREAID":"101110904",
+ "NAMECN":"麟游"
+ },
+ "岐山":{
+ "AREAID":"101110905",
+ "NAMECN":"岐山"
+ },
+ "凤翔":{
+ "AREAID":"101110906",
+ "NAMECN":"凤翔"
+ },
+ "扶风":{
+ "AREAID":"101110907",
+ "NAMECN":"扶风"
+ },
+ "眉县":{
+ "AREAID":"101110908",
+ "NAMECN":"眉县"
+ },
+ "太白":{
+ "AREAID":"101110909",
+ "NAMECN":"太白"
+ },
+ "凤县":{
+ "AREAID":"101110910",
+ "NAMECN":"凤县"
+ },
+ "陇县":{
+ "AREAID":"101110911",
+ "NAMECN":"陇县"
+ },
+ "陈仓":{
+ "AREAID":"101110912",
+ "NAMECN":"陈仓"
+ },
+ "金台":{
+ "AREAID":"101110913",
+ "NAMECN":"金台"
+ }
+ },
+ "铜川":{
+ "铜川":{
+ "AREAID":"101111001",
+ "NAMECN":"铜川"
+ },
+ "宜君":{
+ "AREAID":"101111003",
+ "NAMECN":"宜君"
+ },
+ "耀州":{
+ "AREAID":"101111004",
+ "NAMECN":"耀州"
+ },
+ "王益":{
+ "AREAID":"101111005",
+ "NAMECN":"王益"
+ },
+ "印台":{
+ "AREAID":"101111006",
+ "NAMECN":"印台"
+ }
+ },
+ "杨凌":{
+ "杨凌":{
+ "AREAID":"101111101",
+ "NAMECN":"杨凌"
+ },
+ "杨陵":{
+ "AREAID":"101111102",
+ "NAMECN":"杨陵"
+ }
+ }
+ },
+ "山东":{
+ "济南":{
+ "济南":{
+ "AREAID":"101120101",
+ "NAMECN":"济南"
+ },
+ "长清":{
+ "AREAID":"101120102",
+ "NAMECN":"长清"
+ },
+ "商河":{
+ "AREAID":"101120103",
+ "NAMECN":"商河"
+ },
+ "章丘":{
+ "AREAID":"101120104",
+ "NAMECN":"章丘"
+ },
+ "平阴":{
+ "AREAID":"101120105",
+ "NAMECN":"平阴"
+ },
+ "济阳":{
+ "AREAID":"101120106",
+ "NAMECN":"济阳"
+ },
+ "历下":{
+ "AREAID":"101120107",
+ "NAMECN":"历下"
+ },
+ "市中":{
+ "AREAID":"101120108",
+ "NAMECN":"市中"
+ },
+ "槐荫":{
+ "AREAID":"101120109",
+ "NAMECN":"槐荫"
+ },
+ "天桥":{
+ "AREAID":"101120110",
+ "NAMECN":"天桥"
+ },
+ "历城":{
+ "AREAID":"101120111",
+ "NAMECN":"历城"
+ }
+ },
+ "青岛":{
+ "青岛":{
+ "AREAID":"101120201",
+ "NAMECN":"青岛"
+ },
+ "崂山":{
+ "AREAID":"101120202",
+ "NAMECN":"崂山"
+ },
+ "市南":{
+ "AREAID":"101120203",
+ "NAMECN":"市南"
+ },
+ "即墨":{
+ "AREAID":"101120204",
+ "NAMECN":"即墨"
+ },
+ "胶州":{
+ "AREAID":"101120205",
+ "NAMECN":"胶州"
+ },
+ "黄岛":{
+ "AREAID":"101120206",
+ "NAMECN":"黄岛"
+ },
+ "莱西":{
+ "AREAID":"101120207",
+ "NAMECN":"莱西"
+ },
+ "平度":{
+ "AREAID":"101120208",
+ "NAMECN":"平度"
+ },
+ "市北":{
+ "AREAID":"101120209",
+ "NAMECN":"市北"
+ },
+ "李沧":{
+ "AREAID":"101120210",
+ "NAMECN":"李沧"
+ },
+ "城阳":{
+ "AREAID":"101120211",
+ "NAMECN":"城阳"
+ }
+ },
+ "淄博":{
+ "淄博":{
+ "AREAID":"101120301",
+ "NAMECN":"淄博"
+ },
+ "淄川":{
+ "AREAID":"101120302",
+ "NAMECN":"淄川"
+ },
+ "博山":{
+ "AREAID":"101120303",
+ "NAMECN":"博山"
+ },
+ "高青":{
+ "AREAID":"101120304",
+ "NAMECN":"高青"
+ },
+ "周村":{
+ "AREAID":"101120305",
+ "NAMECN":"周村"
+ },
+ "沂源":{
+ "AREAID":"101120306",
+ "NAMECN":"沂源"
+ },
+ "桓台":{
+ "AREAID":"101120307",
+ "NAMECN":"桓台"
+ },
+ "临淄":{
+ "AREAID":"101120308",
+ "NAMECN":"临淄"
+ },
+ "张店":{
+ "AREAID":"101120309",
+ "NAMECN":"张店"
+ }
+ },
+ "德州":{
+ "德州":{
+ "AREAID":"101120401",
+ "NAMECN":"德州"
+ },
+ "武城":{
+ "AREAID":"101120402",
+ "NAMECN":"武城"
+ },
+ "临邑":{
+ "AREAID":"101120403",
+ "NAMECN":"临邑"
+ },
+ "陵县":{
+ "AREAID":"101120404",
+ "NAMECN":"陵县"
+ },
+ "齐河":{
+ "AREAID":"101120405",
+ "NAMECN":"齐河"
+ },
+ "乐陵":{
+ "AREAID":"101120406",
+ "NAMECN":"乐陵"
+ },
+ "庆云":{
+ "AREAID":"101120407",
+ "NAMECN":"庆云"
+ },
+ "平原":{
+ "AREAID":"101120408",
+ "NAMECN":"平原"
+ },
+ "宁津":{
+ "AREAID":"101120409",
+ "NAMECN":"宁津"
+ },
+ "夏津":{
+ "AREAID":"101120410",
+ "NAMECN":"夏津"
+ },
+ "禹城":{
+ "AREAID":"101120411",
+ "NAMECN":"禹城"
+ },
+ "德城":{
+ "AREAID":"101120412",
+ "NAMECN":"德城"
+ },
+ "陵城":{
+ "AREAID":"101120413",
+ "NAMECN":"陵城"
+ }
+ },
+ "烟台":{
+ "烟台":{
+ "AREAID":"101120501",
+ "NAMECN":"烟台"
+ },
+ "莱州":{
+ "AREAID":"101120502",
+ "NAMECN":"莱州"
+ },
+ "长岛":{
+ "AREAID":"101120503",
+ "NAMECN":"长岛"
+ },
+ "蓬莱":{
+ "AREAID":"101120504",
+ "NAMECN":"蓬莱"
+ },
+ "龙口":{
+ "AREAID":"101120505",
+ "NAMECN":"龙口"
+ },
+ "招远":{
+ "AREAID":"101120506",
+ "NAMECN":"招远"
+ },
+ "栖霞":{
+ "AREAID":"101120507",
+ "NAMECN":"栖霞"
+ },
+ "福山":{
+ "AREAID":"101120508",
+ "NAMECN":"福山"
+ },
+ "牟平":{
+ "AREAID":"101120509",
+ "NAMECN":"牟平"
+ },
+ "莱阳":{
+ "AREAID":"101120510",
+ "NAMECN":"莱阳"
+ },
+ "海阳":{
+ "AREAID":"101120511",
+ "NAMECN":"海阳"
+ },
+ "芝罘":{
+ "AREAID":"101120512",
+ "NAMECN":"芝罘"
+ },
+ "莱山":{
+ "AREAID":"101120513",
+ "NAMECN":"莱山"
+ }
+ },
+ "潍坊":{
+ "潍坊":{
+ "AREAID":"101120601",
+ "NAMECN":"潍坊"
+ },
+ "青州":{
+ "AREAID":"101120602",
+ "NAMECN":"青州"
+ },
+ "寿光":{
+ "AREAID":"101120603",
+ "NAMECN":"寿光"
+ },
+ "临朐":{
+ "AREAID":"101120604",
+ "NAMECN":"临朐"
+ },
+ "昌乐":{
+ "AREAID":"101120605",
+ "NAMECN":"昌乐"
+ },
+ "昌邑":{
+ "AREAID":"101120606",
+ "NAMECN":"昌邑"
+ },
+ "安丘":{
+ "AREAID":"101120607",
+ "NAMECN":"安丘"
+ },
+ "高密":{
+ "AREAID":"101120608",
+ "NAMECN":"高密"
+ },
+ "诸城":{
+ "AREAID":"101120609",
+ "NAMECN":"诸城"
+ },
+ "潍城":{
+ "AREAID":"101120610",
+ "NAMECN":"潍城"
+ },
+ "寒亭":{
+ "AREAID":"101120611",
+ "NAMECN":"寒亭"
+ },
+ "坊子":{
+ "AREAID":"101120612",
+ "NAMECN":"坊子"
+ },
+ "奎文":{
+ "AREAID":"101120613",
+ "NAMECN":"奎文"
+ }
+ },
+ "济宁":{
+ "济宁":{
+ "AREAID":"101120701",
+ "NAMECN":"济宁"
+ },
+ "嘉祥":{
+ "AREAID":"101120702",
+ "NAMECN":"嘉祥"
+ },
+ "微山":{
+ "AREAID":"101120703",
+ "NAMECN":"微山"
+ },
+ "鱼台":{
+ "AREAID":"101120704",
+ "NAMECN":"鱼台"
+ },
+ "兖州":{
+ "AREAID":"101120705",
+ "NAMECN":"兖州"
+ },
+ "金乡":{
+ "AREAID":"101120706",
+ "NAMECN":"金乡"
+ },
+ "汶上":{
+ "AREAID":"101120707",
+ "NAMECN":"汶上"
+ },
+ "泗水":{
+ "AREAID":"101120708",
+ "NAMECN":"泗水"
+ },
+ "梁山":{
+ "AREAID":"101120709",
+ "NAMECN":"梁山"
+ },
+ "曲阜":{
+ "AREAID":"101120710",
+ "NAMECN":"曲阜"
+ },
+ "邹城":{
+ "AREAID":"101120711",
+ "NAMECN":"邹城"
+ },
+ "任城":{
+ "AREAID":"101120712",
+ "NAMECN":"任城"
+ }
+ },
+ "泰安":{
+ "泰安":{
+ "AREAID":"101120801",
+ "NAMECN":"泰安"
+ },
+ "新泰":{
+ "AREAID":"101120802",
+ "NAMECN":"新泰"
+ },
+ "泰山":{
+ "AREAID":"101120803",
+ "NAMECN":"泰山"
+ },
+ "肥城":{
+ "AREAID":"101120804",
+ "NAMECN":"肥城"
+ },
+ "东平":{
+ "AREAID":"101120805",
+ "NAMECN":"东平"
+ },
+ "宁阳":{
+ "AREAID":"101120806",
+ "NAMECN":"宁阳"
+ },
+ "岱岳":{
+ "AREAID":"101120807",
+ "NAMECN":"岱岳"
+ }
+ },
+ "临沂":{
+ "临沂":{
+ "AREAID":"101120901",
+ "NAMECN":"临沂"
+ },
+ "莒南":{
+ "AREAID":"101120902",
+ "NAMECN":"莒南"
+ },
+ "沂南":{
+ "AREAID":"101120903",
+ "NAMECN":"沂南"
+ },
+ "兰陵":{
+ "AREAID":"101120904",
+ "NAMECN":"兰陵"
+ },
+ "临沭":{
+ "AREAID":"101120905",
+ "NAMECN":"临沭"
+ },
+ "郯城":{
+ "AREAID":"101120906",
+ "NAMECN":"郯城"
+ },
+ "蒙阴":{
+ "AREAID":"101120907",
+ "NAMECN":"蒙阴"
+ },
+ "平邑":{
+ "AREAID":"101120908",
+ "NAMECN":"平邑"
+ },
+ "费县":{
+ "AREAID":"101120909",
+ "NAMECN":"费县"
+ },
+ "沂水":{
+ "AREAID":"101120910",
+ "NAMECN":"沂水"
+ },
+ "兰山":{
+ "AREAID":"101120911",
+ "NAMECN":"兰山"
+ },
+ "罗庄":{
+ "AREAID":"101120912",
+ "NAMECN":"罗庄"
+ },
+ "河东":{
+ "AREAID":"101120913",
+ "NAMECN":"河东"
+ }
+ },
+ "菏泽":{
+ "菏泽":{
+ "AREAID":"101121001",
+ "NAMECN":"菏泽"
+ },
+ "鄄城":{
+ "AREAID":"101121002",
+ "NAMECN":"鄄城"
+ },
+ "郓城":{
+ "AREAID":"101121003",
+ "NAMECN":"郓城"
+ },
+ "东明":{
+ "AREAID":"101121004",
+ "NAMECN":"东明"
+ },
+ "定陶":{
+ "AREAID":"101121005",
+ "NAMECN":"定陶"
+ },
+ "巨野":{
+ "AREAID":"101121006",
+ "NAMECN":"巨野"
+ },
+ "曹县":{
+ "AREAID":"101121007",
+ "NAMECN":"曹县"
+ },
+ "成武":{
+ "AREAID":"101121008",
+ "NAMECN":"成武"
+ },
+ "单县":{
+ "AREAID":"101121009",
+ "NAMECN":"单县"
+ },
+ "牡丹":{
+ "AREAID":"101121010",
+ "NAMECN":"牡丹"
+ }
+ },
+ "滨州":{
+ "滨州":{
+ "AREAID":"101121101",
+ "NAMECN":"滨州"
+ },
+ "博兴":{
+ "AREAID":"101121102",
+ "NAMECN":"博兴"
+ },
+ "无棣":{
+ "AREAID":"101121103",
+ "NAMECN":"无棣"
+ },
+ "阳信":{
+ "AREAID":"101121104",
+ "NAMECN":"阳信"
+ },
+ "惠民":{
+ "AREAID":"101121105",
+ "NAMECN":"惠民"
+ },
+ "沾化":{
+ "AREAID":"101121106",
+ "NAMECN":"沾化"
+ },
+ "邹平":{
+ "AREAID":"101121107",
+ "NAMECN":"邹平"
+ },
+ "滨城":{
+ "AREAID":"101121108",
+ "NAMECN":"滨城"
+ }
+ },
+ "东营":{
+ "东营":{
+ "AREAID":"101121201",
+ "NAMECN":"东营"
+ },
+ "河口":{
+ "AREAID":"101121202",
+ "NAMECN":"河口"
+ },
+ "垦利":{
+ "AREAID":"101121203",
+ "NAMECN":"垦利"
+ },
+ "利津":{
+ "AREAID":"101121204",
+ "NAMECN":"利津"
+ },
+ "广饶":{
+ "AREAID":"101121205",
+ "NAMECN":"广饶"
+ }
+ },
+ "威海":{
+ "威海":{
+ "AREAID":"101121301",
+ "NAMECN":"威海"
+ },
+ "文登":{
+ "AREAID":"101121302",
+ "NAMECN":"文登"
+ },
+ "荣成":{
+ "AREAID":"101121303",
+ "NAMECN":"荣成"
+ },
+ "乳山":{
+ "AREAID":"101121304",
+ "NAMECN":"乳山"
+ },
+ "成山头":{
+ "AREAID":"101121305",
+ "NAMECN":"成山头"
+ },
+ "石岛":{
+ "AREAID":"101121306",
+ "NAMECN":"石岛"
+ },
+ "环翠":{
+ "AREAID":"101121307",
+ "NAMECN":"环翠"
+ }
+ },
+ "枣庄":{
+ "枣庄":{
+ "AREAID":"101121401",
+ "NAMECN":"枣庄"
+ },
+ "薛城":{
+ "AREAID":"101121402",
+ "NAMECN":"薛城"
+ },
+ "峄城":{
+ "AREAID":"101121403",
+ "NAMECN":"峄城"
+ },
+ "台儿庄":{
+ "AREAID":"101121404",
+ "NAMECN":"台儿庄"
+ },
+ "滕州":{
+ "AREAID":"101121405",
+ "NAMECN":"滕州"
+ },
+ "市中":{
+ "AREAID":"101121406",
+ "NAMECN":"市中"
+ },
+ "山亭":{
+ "AREAID":"101121407",
+ "NAMECN":"山亭"
+ }
+ },
+ "日照":{
+ "日照":{
+ "AREAID":"101121501",
+ "NAMECN":"日照"
+ },
+ "五莲":{
+ "AREAID":"101121502",
+ "NAMECN":"五莲"
+ },
+ "莒县":{
+ "AREAID":"101121503",
+ "NAMECN":"莒县"
+ },
+ "东港":{
+ "AREAID":"101121504",
+ "NAMECN":"东港"
+ },
+ "岚山":{
+ "AREAID":"101121505",
+ "NAMECN":"岚山"
+ }
+ },
+ "莱芜":{
+ "莱芜":{
+ "AREAID":"101121601",
+ "NAMECN":"莱芜"
+ },
+ "莱城":{
+ "AREAID":"101121602",
+ "NAMECN":"莱城"
+ },
+ "钢城":{
+ "AREAID":"101121603",
+ "NAMECN":"钢城"
+ }
+ },
+ "聊城":{
+ "聊城":{
+ "AREAID":"101121701",
+ "NAMECN":"聊城"
+ },
+ "冠县":{
+ "AREAID":"101121702",
+ "NAMECN":"冠县"
+ },
+ "阳谷":{
+ "AREAID":"101121703",
+ "NAMECN":"阳谷"
+ },
+ "高唐":{
+ "AREAID":"101121704",
+ "NAMECN":"高唐"
+ },
+ "茌平":{
+ "AREAID":"101121705",
+ "NAMECN":"茌平"
+ },
+ "东阿":{
+ "AREAID":"101121706",
+ "NAMECN":"东阿"
+ },
+ "临清":{
+ "AREAID":"101121707",
+ "NAMECN":"临清"
+ },
+ "东昌府":{
+ "AREAID":"101121708",
+ "NAMECN":"东昌府"
+ },
+ "莘县":{
+ "AREAID":"101121709",
+ "NAMECN":"莘县"
+ }
+ }
+ },
+ "新疆":{
+ "乌鲁木齐":{
+ "乌鲁木齐":{
+ "AREAID":"101130101",
+ "NAMECN":"乌鲁木齐"
+ },
+ "天山":{
+ "AREAID":"101130102",
+ "NAMECN":"天山"
+ },
+ "小渠子":{
+ "AREAID":"101130103",
+ "NAMECN":"小渠子"
+ },
+ "沙依巴克":{
+ "AREAID":"101130104",
+ "NAMECN":"沙依巴克"
+ },
+ "达坂城":{
+ "AREAID":"101130105",
+ "NAMECN":"达坂城"
+ },
+ "新市":{
+ "AREAID":"101130106",
+ "NAMECN":"新市"
+ },
+ "水磨沟":{
+ "AREAID":"101130107",
+ "NAMECN":"水磨沟"
+ },
+ "天池":{
+ "AREAID":"101130109",
+ "NAMECN":"天池"
+ },
+ "头屯河":{
+ "AREAID":"101130111",
+ "NAMECN":"头屯河"
+ },
+ "米东":{
+ "AREAID":"101130112",
+ "NAMECN":"米东"
+ },
+ "乌鲁木齐县":{
+ "AREAID":"101130113",
+ "NAMECN":"乌鲁木齐县"
+ },
+ "西白杨沟":{
+ "AREAID":"101130114",
+ "NAMECN":"西白杨沟"
+ }
+ },
+ "克拉玛依":{
+ "克拉玛依":{
+ "AREAID":"101130201",
+ "NAMECN":"克拉玛依"
+ },
+ "乌尔禾":{
+ "AREAID":"101130202",
+ "NAMECN":"乌尔禾"
+ },
+ "白碱滩":{
+ "AREAID":"101130203",
+ "NAMECN":"白碱滩"
+ },
+ "独山子":{
+ "AREAID":"101130204",
+ "NAMECN":"独山子"
+ }
+ },
+ "石河子":{
+ "石河子":{
+ "AREAID":"101130301",
+ "NAMECN":"石河子"
+ },
+ "炮台":{
+ "AREAID":"101130302",
+ "NAMECN":"炮台"
+ },
+ "莫索湾":{
+ "AREAID":"101130303",
+ "NAMECN":"莫索湾"
+ }
+ },
+ "昌吉":{
+ "昌吉":{
+ "AREAID":"101130401",
+ "NAMECN":"昌吉"
+ },
+ "呼图壁":{
+ "AREAID":"101130402",
+ "NAMECN":"呼图壁"
+ },
+ "阜康":{
+ "AREAID":"101130404",
+ "NAMECN":"阜康"
+ },
+ "吉木萨尔":{
+ "AREAID":"101130405",
+ "NAMECN":"吉木萨尔"
+ },
+ "奇台":{
+ "AREAID":"101130406",
+ "NAMECN":"奇台"
+ },
+ "玛纳斯":{
+ "AREAID":"101130407",
+ "NAMECN":"玛纳斯"
+ },
+ "木垒":{
+ "AREAID":"101130408",
+ "NAMECN":"木垒"
+ },
+ "蔡家湖":{
+ "AREAID":"101130409",
+ "NAMECN":"蔡家湖"
+ }
+ },
+ "吐鲁番":{
+ "吐鲁番":{
+ "AREAID":"101130501",
+ "NAMECN":"吐鲁番"
+ },
+ "托克逊":{
+ "AREAID":"101130502",
+ "NAMECN":"托克逊"
+ },
+ "高昌":{
+ "AREAID":"101130503",
+ "NAMECN":"高昌"
+ },
+ "鄯善":{
+ "AREAID":"101130504",
+ "NAMECN":"鄯善"
+ }
+ },
+ "巴音郭楞":{
+ "库尔勒":{
+ "AREAID":"101130601",
+ "NAMECN":"库尔勒"
+ },
+ "轮台":{
+ "AREAID":"101130602",
+ "NAMECN":"轮台"
+ },
+ "尉犁":{
+ "AREAID":"101130603",
+ "NAMECN":"尉犁"
+ },
+ "若羌":{
+ "AREAID":"101130604",
+ "NAMECN":"若羌"
+ },
+ "且末":{
+ "AREAID":"101130605",
+ "NAMECN":"且末"
+ },
+ "和静":{
+ "AREAID":"101130606",
+ "NAMECN":"和静"
+ },
+ "焉耆":{
+ "AREAID":"101130607",
+ "NAMECN":"焉耆"
+ },
+ "和硕":{
+ "AREAID":"101130608",
+ "NAMECN":"和硕"
+ },
+ "巴音郭楞":{
+ "AREAID":"101130609",
+ "NAMECN":"巴音郭楞"
+ },
+ "巴音布鲁克":{
+ "AREAID":"101130610",
+ "NAMECN":"巴音布鲁克"
+ },
+ "铁干里克":{
+ "AREAID":"101130611",
+ "NAMECN":"铁干里克"
+ },
+ "博湖":{
+ "AREAID":"101130612",
+ "NAMECN":"博湖"
+ },
+ "塔中":{
+ "AREAID":"101130613",
+ "NAMECN":"塔中"
+ },
+ "巴仑台":{
+ "AREAID":"101130614",
+ "NAMECN":"巴仑台"
+ }
+ },
+ "阿拉尔":{
+ "阿拉尔":{
+ "AREAID":"101130701",
+ "NAMECN":"阿拉尔"
+ }
+ },
+ "阿克苏":{
+ "阿克苏":{
+ "AREAID":"101130801",
+ "NAMECN":"阿克苏"
+ },
+ "乌什":{
+ "AREAID":"101130802",
+ "NAMECN":"乌什"
+ },
+ "温宿":{
+ "AREAID":"101130803",
+ "NAMECN":"温宿"
+ },
+ "拜城":{
+ "AREAID":"101130804",
+ "NAMECN":"拜城"
+ },
+ "新和":{
+ "AREAID":"101130805",
+ "NAMECN":"新和"
+ },
+ "沙雅":{
+ "AREAID":"101130806",
+ "NAMECN":"沙雅"
+ },
+ "库车":{
+ "AREAID":"101130807",
+ "NAMECN":"库车"
+ },
+ "柯坪":{
+ "AREAID":"101130808",
+ "NAMECN":"柯坪"
+ },
+ "阿瓦提":{
+ "AREAID":"101130809",
+ "NAMECN":"阿瓦提"
+ }
+ },
+ "喀什":{
+ "喀什":{
+ "AREAID":"101130901",
+ "NAMECN":"喀什"
+ },
+ "英吉沙":{
+ "AREAID":"101130902",
+ "NAMECN":"英吉沙"
+ },
+ "塔什库尔干":{
+ "AREAID":"101130903",
+ "NAMECN":"塔什库尔干"
+ },
+ "麦盖提":{
+ "AREAID":"101130904",
+ "NAMECN":"麦盖提"
+ },
+ "莎车":{
+ "AREAID":"101130905",
+ "NAMECN":"莎车"
+ },
+ "叶城":{
+ "AREAID":"101130906",
+ "NAMECN":"叶城"
+ },
+ "泽普":{
+ "AREAID":"101130907",
+ "NAMECN":"泽普"
+ },
+ "巴楚":{
+ "AREAID":"101130908",
+ "NAMECN":"巴楚"
+ },
+ "岳普湖":{
+ "AREAID":"101130909",
+ "NAMECN":"岳普湖"
+ },
+ "伽师":{
+ "AREAID":"101130910",
+ "NAMECN":"伽师"
+ },
+ "疏附":{
+ "AREAID":"101130911",
+ "NAMECN":"疏附"
+ },
+ "疏勒":{
+ "AREAID":"101130912",
+ "NAMECN":"疏勒"
+ }
+ },
+ "伊犁":{
+ "伊宁":{
+ "AREAID":"101131001",
+ "NAMECN":"伊宁"
+ },
+ "察布查尔":{
+ "AREAID":"101131002",
+ "NAMECN":"察布查尔"
+ },
+ "尼勒克":{
+ "AREAID":"101131003",
+ "NAMECN":"尼勒克"
+ },
+ "伊宁县":{
+ "AREAID":"101131004",
+ "NAMECN":"伊宁县"
+ },
+ "巩留":{
+ "AREAID":"101131005",
+ "NAMECN":"巩留"
+ },
+ "新源":{
+ "AREAID":"101131006",
+ "NAMECN":"新源"
+ },
+ "昭苏":{
+ "AREAID":"101131007",
+ "NAMECN":"昭苏"
+ },
+ "特克斯":{
+ "AREAID":"101131008",
+ "NAMECN":"特克斯"
+ },
+ "霍城":{
+ "AREAID":"101131009",
+ "NAMECN":"霍城"
+ },
+ "霍尔果斯":{
+ "AREAID":"101131010",
+ "NAMECN":"霍尔果斯"
+ },
+ "奎屯":{
+ "AREAID":"101131011",
+ "NAMECN":"奎屯"
+ },
+ "伊犁":{
+ "AREAID":"101131012",
+ "NAMECN":"伊犁"
+ }
+ },
+ "塔城":{
+ "塔城":{
+ "AREAID":"101131101",
+ "NAMECN":"塔城"
+ },
+ "裕民":{
+ "AREAID":"101131102",
+ "NAMECN":"裕民"
+ },
+ "额敏":{
+ "AREAID":"101131103",
+ "NAMECN":"额敏"
+ },
+ "和布克赛尔":{
+ "AREAID":"101131104",
+ "NAMECN":"和布克赛尔"
+ },
+ "托里":{
+ "AREAID":"101131105",
+ "NAMECN":"托里"
+ },
+ "乌苏":{
+ "AREAID":"101131106",
+ "NAMECN":"乌苏"
+ },
+ "沙湾":{
+ "AREAID":"101131107",
+ "NAMECN":"沙湾"
+ }
+ },
+ "哈密":{
+ "哈密":{
+ "AREAID":"101131201",
+ "NAMECN":"哈密"
+ },
+ "伊州":{
+ "AREAID":"101131202",
+ "NAMECN":"伊州"
+ },
+ "巴里坤":{
+ "AREAID":"101131203",
+ "NAMECN":"巴里坤"
+ },
+ "伊吾":{
+ "AREAID":"101131204",
+ "NAMECN":"伊吾"
+ }
+ },
+ "和田":{
+ "和田":{
+ "AREAID":"101131301",
+ "NAMECN":"和田"
+ },
+ "皮山":{
+ "AREAID":"101131302",
+ "NAMECN":"皮山"
+ },
+ "策勒":{
+ "AREAID":"101131303",
+ "NAMECN":"策勒"
+ },
+ "墨玉":{
+ "AREAID":"101131304",
+ "NAMECN":"墨玉"
+ },
+ "洛浦":{
+ "AREAID":"101131305",
+ "NAMECN":"洛浦"
+ },
+ "民丰":{
+ "AREAID":"101131306",
+ "NAMECN":"民丰"
+ },
+ "于田":{
+ "AREAID":"101131307",
+ "NAMECN":"于田"
+ }
+ },
+ "阿勒泰":{
+ "阿勒泰":{
+ "AREAID":"101131401",
+ "NAMECN":"阿勒泰"
+ },
+ "哈巴河":{
+ "AREAID":"101131402",
+ "NAMECN":"哈巴河"
+ },
+ "吉木乃":{
+ "AREAID":"101131405",
+ "NAMECN":"吉木乃"
+ },
+ "布尔津":{
+ "AREAID":"101131406",
+ "NAMECN":"布尔津"
+ },
+ "福海":{
+ "AREAID":"101131407",
+ "NAMECN":"福海"
+ },
+ "富蕴":{
+ "AREAID":"101131408",
+ "NAMECN":"富蕴"
+ },
+ "青河":{
+ "AREAID":"101131409",
+ "NAMECN":"青河"
+ }
+ },
+ "克州":{
+ "阿图什":{
+ "AREAID":"101131501",
+ "NAMECN":"阿图什"
+ },
+ "乌恰":{
+ "AREAID":"101131502",
+ "NAMECN":"乌恰"
+ },
+ "阿克陶":{
+ "AREAID":"101131503",
+ "NAMECN":"阿克陶"
+ },
+ "阿合奇":{
+ "AREAID":"101131504",
+ "NAMECN":"阿合奇"
+ },
+ "克州":{
+ "AREAID":"101131505",
+ "NAMECN":"克州"
+ }
+ },
+ "博尔塔拉":{
+ "博乐":{
+ "AREAID":"101131601",
+ "NAMECN":"博乐"
+ },
+ "温泉":{
+ "AREAID":"101131602",
+ "NAMECN":"温泉"
+ },
+ "精河":{
+ "AREAID":"101131603",
+ "NAMECN":"精河"
+ },
+ "博尔塔拉":{
+ "AREAID":"101131604",
+ "NAMECN":"博尔塔拉"
+ },
+ "阿拉山口":{
+ "AREAID":"101131606",
+ "NAMECN":"阿拉山口"
+ }
+ },
+ "图木舒克":{
+ "图木舒克":{
+ "AREAID":"101131701",
+ "NAMECN":"图木舒克"
+ }
+ },
+ "五家渠":{
+ "五家渠":{
+ "AREAID":"101131801",
+ "NAMECN":"五家渠"
+ }
+ },
+ "铁门关":{
+ "铁门关":{
+ "AREAID":"101131901",
+ "NAMECN":"铁门关"
+ }
+ },
+ "昆玉":{
+ "昆玉":{
+ "AREAID":"101131920",
+ "NAMECN":"昆玉"
+ }
+ },
+ "北屯":{
+ "北屯":{
+ "AREAID":"101132101",
+ "NAMECN":"北屯"
+ }
+ },
+ "双河":{
+ "双河":{
+ "AREAID":"101132201",
+ "NAMECN":"双河"
+ }
+ },
+ "可克达拉":{
+ "可克达拉":{
+ "AREAID":"101132301",
+ "NAMECN":"可克达拉"
+ }
+ }
+ },
+ "西藏":{
+ "拉萨":{
+ "拉萨":{
+ "AREAID":"101140101",
+ "NAMECN":"拉萨"
+ },
+ "当雄":{
+ "AREAID":"101140102",
+ "NAMECN":"当雄"
+ },
+ "尼木":{
+ "AREAID":"101140103",
+ "NAMECN":"尼木"
+ },
+ "林周":{
+ "AREAID":"101140104",
+ "NAMECN":"林周"
+ },
+ "堆龙德庆":{
+ "AREAID":"101140105",
+ "NAMECN":"堆龙德庆"
+ },
+ "曲水":{
+ "AREAID":"101140106",
+ "NAMECN":"曲水"
+ },
+ "达孜":{
+ "AREAID":"101140107",
+ "NAMECN":"达孜"
+ },
+ "墨竹工卡":{
+ "AREAID":"101140108",
+ "NAMECN":"墨竹工卡"
+ },
+ "城关":{
+ "AREAID":"101140109",
+ "NAMECN":"城关"
+ }
+ },
+ "日喀则":{
+ "日喀则":{
+ "AREAID":"101140201",
+ "NAMECN":"日喀则"
+ },
+ "拉孜":{
+ "AREAID":"101140202",
+ "NAMECN":"拉孜"
+ },
+ "南木林":{
+ "AREAID":"101140203",
+ "NAMECN":"南木林"
+ },
+ "聂拉木":{
+ "AREAID":"101140204",
+ "NAMECN":"聂拉木"
+ },
+ "定日":{
+ "AREAID":"101140205",
+ "NAMECN":"定日"
+ },
+ "江孜":{
+ "AREAID":"101140206",
+ "NAMECN":"江孜"
+ },
+ "帕里":{
+ "AREAID":"101140207",
+ "NAMECN":"帕里"
+ },
+ "仲巴":{
+ "AREAID":"101140208",
+ "NAMECN":"仲巴"
+ },
+ "萨嘎":{
+ "AREAID":"101140209",
+ "NAMECN":"萨嘎"
+ },
+ "吉隆":{
+ "AREAID":"101140210",
+ "NAMECN":"吉隆"
+ },
+ "昂仁":{
+ "AREAID":"101140211",
+ "NAMECN":"昂仁"
+ },
+ "定结":{
+ "AREAID":"101140212",
+ "NAMECN":"定结"
+ },
+ "萨迦":{
+ "AREAID":"101140213",
+ "NAMECN":"萨迦"
+ },
+ "谢通门":{
+ "AREAID":"101140214",
+ "NAMECN":"谢通门"
+ },
+ "桑珠孜":{
+ "AREAID":"101140215",
+ "NAMECN":"桑珠孜"
+ },
+ "岗巴":{
+ "AREAID":"101140216",
+ "NAMECN":"岗巴"
+ },
+ "白朗":{
+ "AREAID":"101140217",
+ "NAMECN":"白朗"
+ },
+ "亚东":{
+ "AREAID":"101140218",
+ "NAMECN":"亚东"
+ },
+ "康马":{
+ "AREAID":"101140219",
+ "NAMECN":"康马"
+ },
+ "仁布":{
+ "AREAID":"101140220",
+ "NAMECN":"仁布"
+ }
+ },
+ "山南":{
+ "山南":{
+ "AREAID":"101140301",
+ "NAMECN":"山南"
+ },
+ "贡嘎":{
+ "AREAID":"101140302",
+ "NAMECN":"贡嘎"
+ },
+ "扎囊":{
+ "AREAID":"101140303",
+ "NAMECN":"扎囊"
+ },
+ "加查":{
+ "AREAID":"101140304",
+ "NAMECN":"加查"
+ },
+ "浪卡子":{
+ "AREAID":"101140305",
+ "NAMECN":"浪卡子"
+ },
+ "错那":{
+ "AREAID":"101140306",
+ "NAMECN":"错那"
+ },
+ "隆子":{
+ "AREAID":"101140307",
+ "NAMECN":"隆子"
+ },
+ "泽当":{
+ "AREAID":"101140308",
+ "NAMECN":"泽当"
+ },
+ "乃东":{
+ "AREAID":"101140309",
+ "NAMECN":"乃东"
+ },
+ "桑日":{
+ "AREAID":"101140310",
+ "NAMECN":"桑日"
+ },
+ "洛扎":{
+ "AREAID":"101140311",
+ "NAMECN":"洛扎"
+ },
+ "措美":{
+ "AREAID":"101140312",
+ "NAMECN":"措美"
+ },
+ "琼结":{
+ "AREAID":"101140313",
+ "NAMECN":"琼结"
+ },
+ "曲松":{
+ "AREAID":"101140314",
+ "NAMECN":"曲松"
+ }
+ },
+ "林芝":{
+ "林芝":{
+ "AREAID":"101140401",
+ "NAMECN":"林芝"
+ },
+ "波密":{
+ "AREAID":"101140402",
+ "NAMECN":"波密"
+ },
+ "米林":{
+ "AREAID":"101140403",
+ "NAMECN":"米林"
+ },
+ "察隅":{
+ "AREAID":"101140404",
+ "NAMECN":"察隅"
+ },
+ "工布江达":{
+ "AREAID":"101140405",
+ "NAMECN":"工布江达"
+ },
+ "朗县":{
+ "AREAID":"101140406",
+ "NAMECN":"朗县"
+ },
+ "墨脱":{
+ "AREAID":"101140407",
+ "NAMECN":"墨脱"
+ },
+ "巴宜":{
+ "AREAID":"101140408",
+ "NAMECN":"巴宜"
+ }
+ },
+ "昌都":{
+ "昌都":{
+ "AREAID":"101140501",
+ "NAMECN":"昌都"
+ },
+ "丁青":{
+ "AREAID":"101140502",
+ "NAMECN":"丁青"
+ },
+ "边坝":{
+ "AREAID":"101140503",
+ "NAMECN":"边坝"
+ },
+ "洛隆":{
+ "AREAID":"101140504",
+ "NAMECN":"洛隆"
+ },
+ "左贡":{
+ "AREAID":"101140505",
+ "NAMECN":"左贡"
+ },
+ "芒康":{
+ "AREAID":"101140506",
+ "NAMECN":"芒康"
+ },
+ "类乌齐":{
+ "AREAID":"101140507",
+ "NAMECN":"类乌齐"
+ },
+ "八宿":{
+ "AREAID":"101140508",
+ "NAMECN":"八宿"
+ },
+ "江达":{
+ "AREAID":"101140509",
+ "NAMECN":"江达"
+ },
+ "察雅":{
+ "AREAID":"101140510",
+ "NAMECN":"察雅"
+ },
+ "贡觉":{
+ "AREAID":"101140511",
+ "NAMECN":"贡觉"
+ },
+ "卡若":{
+ "AREAID":"101140512",
+ "NAMECN":"卡若"
+ }
+ },
+ "那曲":{
+ "那曲":{
+ "AREAID":"101140601",
+ "NAMECN":"那曲"
+ },
+ "尼玛":{
+ "AREAID":"101140602",
+ "NAMECN":"尼玛"
+ },
+ "嘉黎":{
+ "AREAID":"101140603",
+ "NAMECN":"嘉黎"
+ },
+ "班戈":{
+ "AREAID":"101140604",
+ "NAMECN":"班戈"
+ },
+ "安多":{
+ "AREAID":"101140605",
+ "NAMECN":"安多"
+ },
+ "索县":{
+ "AREAID":"101140606",
+ "NAMECN":"索县"
+ },
+ "聂荣":{
+ "AREAID":"101140607",
+ "NAMECN":"聂荣"
+ },
+ "巴青":{
+ "AREAID":"101140608",
+ "NAMECN":"巴青"
+ },
+ "比如":{
+ "AREAID":"101140609",
+ "NAMECN":"比如"
+ },
+ "双湖":{
+ "AREAID":"101140610",
+ "NAMECN":"双湖"
+ },
+ "申扎":{
+ "AREAID":"101140611",
+ "NAMECN":"申扎"
+ },
+ "色尼":{
+ "AREAID":"101140612",
+ "NAMECN":"色尼"
+ }
+ },
+ "阿里":{
+ "阿里":{
+ "AREAID":"101140701",
+ "NAMECN":"阿里"
+ },
+ "改则":{
+ "AREAID":"101140702",
+ "NAMECN":"改则"
+ },
+ "狮泉河":{
+ "AREAID":"101140704",
+ "NAMECN":"狮泉河"
+ },
+ "普兰":{
+ "AREAID":"101140705",
+ "NAMECN":"普兰"
+ },
+ "札达":{
+ "AREAID":"101140706",
+ "NAMECN":"札达"
+ },
+ "噶尔":{
+ "AREAID":"101140707",
+ "NAMECN":"噶尔"
+ },
+ "日土":{
+ "AREAID":"101140708",
+ "NAMECN":"日土"
+ },
+ "革吉":{
+ "AREAID":"101140709",
+ "NAMECN":"革吉"
+ },
+ "措勤":{
+ "AREAID":"101140710",
+ "NAMECN":"措勤"
+ }
+ }
+ },
+ "青海":{
+ "西宁":{
+ "西宁":{
+ "AREAID":"101150101",
+ "NAMECN":"西宁"
+ },
+ "大通":{
+ "AREAID":"101150102",
+ "NAMECN":"大通"
+ },
+ "湟源":{
+ "AREAID":"101150103",
+ "NAMECN":"湟源"
+ },
+ "湟中":{
+ "AREAID":"101150104",
+ "NAMECN":"湟中"
+ },
+ "城东":{
+ "AREAID":"101150105",
+ "NAMECN":"城东"
+ },
+ "城中":{
+ "AREAID":"101150106",
+ "NAMECN":"城中"
+ },
+ "城西":{
+ "AREAID":"101150107",
+ "NAMECN":"城西"
+ },
+ "城北":{
+ "AREAID":"101150108",
+ "NAMECN":"城北"
+ }
+ },
+ "海东":{
+ "平安":{
+ "AREAID":"101150201",
+ "NAMECN":"平安"
+ },
+ "乐都":{
+ "AREAID":"101150202",
+ "NAMECN":"乐都"
+ },
+ "民和":{
+ "AREAID":"101150203",
+ "NAMECN":"民和"
+ },
+ "互助":{
+ "AREAID":"101150204",
+ "NAMECN":"互助"
+ },
+ "化隆":{
+ "AREAID":"101150205",
+ "NAMECN":"化隆"
+ },
+ "循化":{
+ "AREAID":"101150206",
+ "NAMECN":"循化"
+ },
+ "海东":{
+ "AREAID":"101150207",
+ "NAMECN":"海东"
+ }
+ },
+ "黄南":{
+ "同仁":{
+ "AREAID":"101150301",
+ "NAMECN":"同仁"
+ },
+ "尖扎":{
+ "AREAID":"101150302",
+ "NAMECN":"尖扎"
+ },
+ "泽库":{
+ "AREAID":"101150303",
+ "NAMECN":"泽库"
+ },
+ "河南":{
+ "AREAID":"101150304",
+ "NAMECN":"河南"
+ },
+ "黄南":{
+ "AREAID":"101150305",
+ "NAMECN":"黄南"
+ }
+ },
+ "海南":{
+ "共和":{
+ "AREAID":"101150401",
+ "NAMECN":"共和"
+ },
+ "海南":{
+ "AREAID":"101150402",
+ "NAMECN":"海南"
+ },
+ "贵德":{
+ "AREAID":"101150404",
+ "NAMECN":"贵德"
+ },
+ "兴海":{
+ "AREAID":"101150406",
+ "NAMECN":"兴海"
+ },
+ "贵南":{
+ "AREAID":"101150407",
+ "NAMECN":"贵南"
+ },
+ "同德":{
+ "AREAID":"101150408",
+ "NAMECN":"同德"
+ }
+ },
+ "果洛":{
+ "玛沁":{
+ "AREAID":"101150501",
+ "NAMECN":"玛沁"
+ },
+ "班玛":{
+ "AREAID":"101150502",
+ "NAMECN":"班玛"
+ },
+ "甘德":{
+ "AREAID":"101150503",
+ "NAMECN":"甘德"
+ },
+ "达日":{
+ "AREAID":"101150504",
+ "NAMECN":"达日"
+ },
+ "久治":{
+ "AREAID":"101150505",
+ "NAMECN":"久治"
+ },
+ "玛多":{
+ "AREAID":"101150506",
+ "NAMECN":"玛多"
+ },
+ "果洛":{
+ "AREAID":"101150507",
+ "NAMECN":"果洛"
+ }
+ },
+ "玉树":{
+ "玉树":{
+ "AREAID":"101150601",
+ "NAMECN":"玉树"
+ },
+ "称多":{
+ "AREAID":"101150602",
+ "NAMECN":"称多"
+ },
+ "治多":{
+ "AREAID":"101150603",
+ "NAMECN":"治多"
+ },
+ "杂多":{
+ "AREAID":"101150604",
+ "NAMECN":"杂多"
+ },
+ "囊谦":{
+ "AREAID":"101150605",
+ "NAMECN":"囊谦"
+ },
+ "曲麻莱":{
+ "AREAID":"101150606",
+ "NAMECN":"曲麻莱"
+ }
+ },
+ "海西":{
+ "德令哈":{
+ "AREAID":"101150701",
+ "NAMECN":"德令哈"
+ },
+ "海西":{
+ "AREAID":"101150702",
+ "NAMECN":"海西"
+ },
+ "天峻":{
+ "AREAID":"101150708",
+ "NAMECN":"天峻"
+ },
+ "乌兰":{
+ "AREAID":"101150709",
+ "NAMECN":"乌兰"
+ },
+ "茫崖":{
+ "AREAID":"101150712",
+ "NAMECN":"茫崖"
+ },
+ "大柴旦":{
+ "AREAID":"101150713",
+ "NAMECN":"大柴旦"
+ },
+ "格尔木":{
+ "AREAID":"101150714",
+ "NAMECN":"格尔木"
+ },
+ "都兰":{
+ "AREAID":"101150715",
+ "NAMECN":"都兰"
+ },
+ "冷湖":{
+ "AREAID":"101150716",
+ "NAMECN":"冷湖"
+ }
+ },
+ "海北":{
+ "海晏":{
+ "AREAID":"101150801",
+ "NAMECN":"海晏"
+ },
+ "门源":{
+ "AREAID":"101150802",
+ "NAMECN":"门源"
+ },
+ "祁连":{
+ "AREAID":"101150803",
+ "NAMECN":"祁连"
+ },
+ "海北":{
+ "AREAID":"101150804",
+ "NAMECN":"海北"
+ },
+ "刚察":{
+ "AREAID":"101150806",
+ "NAMECN":"刚察"
+ }
+ }
+ },
+ "甘肃":{
+ "兰州":{
+ "兰州":{
+ "AREAID":"101160101",
+ "NAMECN":"兰州"
+ },
+ "皋兰":{
+ "AREAID":"101160102",
+ "NAMECN":"皋兰"
+ },
+ "永登":{
+ "AREAID":"101160103",
+ "NAMECN":"永登"
+ },
+ "榆中":{
+ "AREAID":"101160104",
+ "NAMECN":"榆中"
+ },
+ "城关":{
+ "AREAID":"101160105",
+ "NAMECN":"城关"
+ },
+ "七里河":{
+ "AREAID":"101160106",
+ "NAMECN":"七里河"
+ },
+ "西固":{
+ "AREAID":"101160107",
+ "NAMECN":"西固"
+ },
+ "安宁":{
+ "AREAID":"101160108",
+ "NAMECN":"安宁"
+ },
+ "红古":{
+ "AREAID":"101160109",
+ "NAMECN":"红古"
+ }
+ },
+ "定西":{
+ "定西":{
+ "AREAID":"101160201",
+ "NAMECN":"定西"
+ },
+ "通渭":{
+ "AREAID":"101160202",
+ "NAMECN":"通渭"
+ },
+ "陇西":{
+ "AREAID":"101160203",
+ "NAMECN":"陇西"
+ },
+ "渭源":{
+ "AREAID":"101160204",
+ "NAMECN":"渭源"
+ },
+ "临洮":{
+ "AREAID":"101160205",
+ "NAMECN":"临洮"
+ },
+ "漳县":{
+ "AREAID":"101160206",
+ "NAMECN":"漳县"
+ },
+ "岷县":{
+ "AREAID":"101160207",
+ "NAMECN":"岷县"
+ },
+ "安定":{
+ "AREAID":"101160208",
+ "NAMECN":"安定"
+ }
+ },
+ "平凉":{
+ "平凉":{
+ "AREAID":"101160301",
+ "NAMECN":"平凉"
+ },
+ "泾川":{
+ "AREAID":"101160302",
+ "NAMECN":"泾川"
+ },
+ "灵台":{
+ "AREAID":"101160303",
+ "NAMECN":"灵台"
+ },
+ "崇信":{
+ "AREAID":"101160304",
+ "NAMECN":"崇信"
+ },
+ "华亭":{
+ "AREAID":"101160305",
+ "NAMECN":"华亭"
+ },
+ "庄浪":{
+ "AREAID":"101160306",
+ "NAMECN":"庄浪"
+ },
+ "静宁":{
+ "AREAID":"101160307",
+ "NAMECN":"静宁"
+ },
+ "崆峒":{
+ "AREAID":"101160308",
+ "NAMECN":"崆峒"
+ }
+ },
+ "庆阳":{
+ "庆阳":{
+ "AREAID":"101160401",
+ "NAMECN":"庆阳"
+ },
+ "西峰":{
+ "AREAID":"101160402",
+ "NAMECN":"西峰"
+ },
+ "环县":{
+ "AREAID":"101160403",
+ "NAMECN":"环县"
+ },
+ "华池":{
+ "AREAID":"101160404",
+ "NAMECN":"华池"
+ },
+ "合水":{
+ "AREAID":"101160405",
+ "NAMECN":"合水"
+ },
+ "正宁":{
+ "AREAID":"101160406",
+ "NAMECN":"正宁"
+ },
+ "宁县":{
+ "AREAID":"101160407",
+ "NAMECN":"宁县"
+ },
+ "镇原":{
+ "AREAID":"101160408",
+ "NAMECN":"镇原"
+ },
+ "庆城":{
+ "AREAID":"101160409",
+ "NAMECN":"庆城"
+ }
+ },
+ "武威":{
+ "武威":{
+ "AREAID":"101160501",
+ "NAMECN":"武威"
+ },
+ "民勤":{
+ "AREAID":"101160502",
+ "NAMECN":"民勤"
+ },
+ "古浪":{
+ "AREAID":"101160503",
+ "NAMECN":"古浪"
+ },
+ "凉州":{
+ "AREAID":"101160504",
+ "NAMECN":"凉州"
+ },
+ "天祝":{
+ "AREAID":"101160505",
+ "NAMECN":"天祝"
+ }
+ },
+ "金昌":{
+ "金昌":{
+ "AREAID":"101160601",
+ "NAMECN":"金昌"
+ },
+ "永昌":{
+ "AREAID":"101160602",
+ "NAMECN":"永昌"
+ },
+ "金川":{
+ "AREAID":"101160603",
+ "NAMECN":"金川"
+ }
+ },
+ "张掖":{
+ "张掖":{
+ "AREAID":"101160701",
+ "NAMECN":"张掖"
+ },
+ "肃南":{
+ "AREAID":"101160702",
+ "NAMECN":"肃南"
+ },
+ "民乐":{
+ "AREAID":"101160703",
+ "NAMECN":"民乐"
+ },
+ "临泽":{
+ "AREAID":"101160704",
+ "NAMECN":"临泽"
+ },
+ "高台":{
+ "AREAID":"101160705",
+ "NAMECN":"高台"
+ },
+ "山丹":{
+ "AREAID":"101160706",
+ "NAMECN":"山丹"
+ },
+ "甘州":{
+ "AREAID":"101160707",
+ "NAMECN":"甘州"
+ }
+ },
+ "酒泉":{
+ "酒泉":{
+ "AREAID":"101160801",
+ "NAMECN":"酒泉"
+ },
+ "肃州":{
+ "AREAID":"101160802",
+ "NAMECN":"肃州"
+ },
+ "金塔":{
+ "AREAID":"101160803",
+ "NAMECN":"金塔"
+ },
+ "阿克塞":{
+ "AREAID":"101160804",
+ "NAMECN":"阿克塞"
+ },
+ "瓜州":{
+ "AREAID":"101160805",
+ "NAMECN":"瓜州"
+ },
+ "肃北":{
+ "AREAID":"101160806",
+ "NAMECN":"肃北"
+ },
+ "玉门":{
+ "AREAID":"101160807",
+ "NAMECN":"玉门"
+ },
+ "敦煌":{
+ "AREAID":"101160808",
+ "NAMECN":"敦煌"
+ }
+ },
+ "天水":{
+ "天水":{
+ "AREAID":"101160901",
+ "NAMECN":"天水"
+ },
+ "秦州":{
+ "AREAID":"101160902",
+ "NAMECN":"秦州"
+ },
+ "清水":{
+ "AREAID":"101160903",
+ "NAMECN":"清水"
+ },
+ "秦安":{
+ "AREAID":"101160904",
+ "NAMECN":"秦安"
+ },
+ "甘谷":{
+ "AREAID":"101160905",
+ "NAMECN":"甘谷"
+ },
+ "武山":{
+ "AREAID":"101160906",
+ "NAMECN":"武山"
+ },
+ "张家川":{
+ "AREAID":"101160907",
+ "NAMECN":"张家川"
+ },
+ "麦积":{
+ "AREAID":"101160908",
+ "NAMECN":"麦积"
+ }
+ },
+ "陇南":{
+ "武都":{
+ "AREAID":"101161001",
+ "NAMECN":"武都"
+ },
+ "成县":{
+ "AREAID":"101161002",
+ "NAMECN":"成县"
+ },
+ "文县":{
+ "AREAID":"101161003",
+ "NAMECN":"文县"
+ },
+ "宕昌":{
+ "AREAID":"101161004",
+ "NAMECN":"宕昌"
+ },
+ "康县":{
+ "AREAID":"101161005",
+ "NAMECN":"康县"
+ },
+ "西和":{
+ "AREAID":"101161006",
+ "NAMECN":"西和"
+ },
+ "礼县":{
+ "AREAID":"101161007",
+ "NAMECN":"礼县"
+ },
+ "徽县":{
+ "AREAID":"101161008",
+ "NAMECN":"徽县"
+ },
+ "两当":{
+ "AREAID":"101161009",
+ "NAMECN":"两当"
+ },
+ "陇南":{
+ "AREAID":"101161010",
+ "NAMECN":"陇南"
+ }
+ },
+ "临夏":{
+ "临夏":{
+ "AREAID":"101161101",
+ "NAMECN":"临夏"
+ },
+ "康乐":{
+ "AREAID":"101161102",
+ "NAMECN":"康乐"
+ },
+ "永靖":{
+ "AREAID":"101161103",
+ "NAMECN":"永靖"
+ },
+ "广河":{
+ "AREAID":"101161104",
+ "NAMECN":"广河"
+ },
+ "和政":{
+ "AREAID":"101161105",
+ "NAMECN":"和政"
+ },
+ "东乡":{
+ "AREAID":"101161106",
+ "NAMECN":"东乡"
+ },
+ "积石山":{
+ "AREAID":"101161107",
+ "NAMECN":"积石山"
+ }
+ },
+ "甘南":{
+ "合作":{
+ "AREAID":"101161201",
+ "NAMECN":"合作"
+ },
+ "临潭":{
+ "AREAID":"101161202",
+ "NAMECN":"临潭"
+ },
+ "卓尼":{
+ "AREAID":"101161203",
+ "NAMECN":"卓尼"
+ },
+ "舟曲":{
+ "AREAID":"101161204",
+ "NAMECN":"舟曲"
+ },
+ "迭部":{
+ "AREAID":"101161205",
+ "NAMECN":"迭部"
+ },
+ "玛曲":{
+ "AREAID":"101161206",
+ "NAMECN":"玛曲"
+ },
+ "碌曲":{
+ "AREAID":"101161207",
+ "NAMECN":"碌曲"
+ },
+ "夏河":{
+ "AREAID":"101161208",
+ "NAMECN":"夏河"
+ },
+ "甘南":{
+ "AREAID":"101161209",
+ "NAMECN":"甘南"
+ }
+ },
+ "白银":{
+ "白银":{
+ "AREAID":"101161301",
+ "NAMECN":"白银"
+ },
+ "靖远":{
+ "AREAID":"101161302",
+ "NAMECN":"靖远"
+ },
+ "会宁":{
+ "AREAID":"101161303",
+ "NAMECN":"会宁"
+ },
+ "平川":{
+ "AREAID":"101161304",
+ "NAMECN":"平川"
+ },
+ "景泰":{
+ "AREAID":"101161305",
+ "NAMECN":"景泰"
+ }
+ },
+ "嘉峪关":{
+ "嘉峪关":{
+ "AREAID":"101161401",
+ "NAMECN":"嘉峪关"
+ }
+ }
+ },
+ "宁夏":{
+ "银川":{
+ "银川":{
+ "AREAID":"101170101",
+ "NAMECN":"银川"
+ },
+ "永宁":{
+ "AREAID":"101170102",
+ "NAMECN":"永宁"
+ },
+ "灵武":{
+ "AREAID":"101170103",
+ "NAMECN":"灵武"
+ },
+ "贺兰":{
+ "AREAID":"101170104",
+ "NAMECN":"贺兰"
+ },
+ "兴庆":{
+ "AREAID":"101170105",
+ "NAMECN":"兴庆"
+ },
+ "西夏":{
+ "AREAID":"101170106",
+ "NAMECN":"西夏"
+ },
+ "金凤":{
+ "AREAID":"101170107",
+ "NAMECN":"金凤"
+ }
+ },
+ "石嘴山":{
+ "石嘴山":{
+ "AREAID":"101170201",
+ "NAMECN":"石嘴山"
+ },
+ "惠农":{
+ "AREAID":"101170202",
+ "NAMECN":"惠农"
+ },
+ "平罗":{
+ "AREAID":"101170203",
+ "NAMECN":"平罗"
+ },
+ "陶乐":{
+ "AREAID":"101170204",
+ "NAMECN":"陶乐"
+ },
+ "大武口":{
+ "AREAID":"101170205",
+ "NAMECN":"大武口"
+ }
+ },
+ "吴忠":{
+ "吴忠":{
+ "AREAID":"101170301",
+ "NAMECN":"吴忠"
+ },
+ "同心":{
+ "AREAID":"101170302",
+ "NAMECN":"同心"
+ },
+ "盐池":{
+ "AREAID":"101170303",
+ "NAMECN":"盐池"
+ },
+ "利通":{
+ "AREAID":"101170304",
+ "NAMECN":"利通"
+ },
+ "红寺堡":{
+ "AREAID":"101170305",
+ "NAMECN":"红寺堡"
+ },
+ "青铜峡":{
+ "AREAID":"101170306",
+ "NAMECN":"青铜峡"
+ }
+ },
+ "固原":{
+ "固原":{
+ "AREAID":"101170401",
+ "NAMECN":"固原"
+ },
+ "西吉":{
+ "AREAID":"101170402",
+ "NAMECN":"西吉"
+ },
+ "隆德":{
+ "AREAID":"101170403",
+ "NAMECN":"隆德"
+ },
+ "泾源":{
+ "AREAID":"101170404",
+ "NAMECN":"泾源"
+ },
+ "原州":{
+ "AREAID":"101170405",
+ "NAMECN":"原州"
+ },
+ "彭阳":{
+ "AREAID":"101170406",
+ "NAMECN":"彭阳"
+ }
+ },
+ "中卫":{
+ "中卫":{
+ "AREAID":"101170501",
+ "NAMECN":"中卫"
+ },
+ "中宁":{
+ "AREAID":"101170502",
+ "NAMECN":"中宁"
+ },
+ "沙坡头":{
+ "AREAID":"101170503",
+ "NAMECN":"沙坡头"
+ },
+ "海原":{
+ "AREAID":"101170504",
+ "NAMECN":"海原"
+ }
+ }
+ },
+ "河南":{
+ "郑州":{
+ "郑州":{
+ "AREAID":"101180101",
+ "NAMECN":"郑州"
+ },
+ "巩义":{
+ "AREAID":"101180102",
+ "NAMECN":"巩义"
+ },
+ "荥阳":{
+ "AREAID":"101180103",
+ "NAMECN":"荥阳"
+ },
+ "登封":{
+ "AREAID":"101180104",
+ "NAMECN":"登封"
+ },
+ "新密":{
+ "AREAID":"101180105",
+ "NAMECN":"新密"
+ },
+ "新郑":{
+ "AREAID":"101180106",
+ "NAMECN":"新郑"
+ },
+ "中牟":{
+ "AREAID":"101180107",
+ "NAMECN":"中牟"
+ },
+ "上街":{
+ "AREAID":"101180108",
+ "NAMECN":"上街"
+ },
+ "中原":{
+ "AREAID":"101180109",
+ "NAMECN":"中原"
+ },
+ "二七":{
+ "AREAID":"101180110",
+ "NAMECN":"二七"
+ },
+ "管城":{
+ "AREAID":"101180111",
+ "NAMECN":"管城"
+ },
+ "金水":{
+ "AREAID":"101180112",
+ "NAMECN":"金水"
+ },
+ "惠济":{
+ "AREAID":"101180113",
+ "NAMECN":"惠济"
+ }
+ },
+ "安阳":{
+ "安阳":{
+ "AREAID":"101180201",
+ "NAMECN":"安阳"
+ },
+ "汤阴":{
+ "AREAID":"101180202",
+ "NAMECN":"汤阴"
+ },
+ "滑县":{
+ "AREAID":"101180203",
+ "NAMECN":"滑县"
+ },
+ "内黄":{
+ "AREAID":"101180204",
+ "NAMECN":"内黄"
+ },
+ "林州":{
+ "AREAID":"101180205",
+ "NAMECN":"林州"
+ },
+ "文峰":{
+ "AREAID":"101180206",
+ "NAMECN":"文峰"
+ },
+ "北关":{
+ "AREAID":"101180207",
+ "NAMECN":"北关"
+ },
+ "殷都":{
+ "AREAID":"101180208",
+ "NAMECN":"殷都"
+ },
+ "龙安":{
+ "AREAID":"101180209",
+ "NAMECN":"龙安"
+ }
+ },
+ "新乡":{
+ "新乡":{
+ "AREAID":"101180301",
+ "NAMECN":"新乡"
+ },
+ "获嘉":{
+ "AREAID":"101180302",
+ "NAMECN":"获嘉"
+ },
+ "原阳":{
+ "AREAID":"101180303",
+ "NAMECN":"原阳"
+ },
+ "辉县":{
+ "AREAID":"101180304",
+ "NAMECN":"辉县"
+ },
+ "卫辉":{
+ "AREAID":"101180305",
+ "NAMECN":"卫辉"
+ },
+ "延津":{
+ "AREAID":"101180306",
+ "NAMECN":"延津"
+ },
+ "封丘":{
+ "AREAID":"101180307",
+ "NAMECN":"封丘"
+ },
+ "长垣":{
+ "AREAID":"101180308",
+ "NAMECN":"长垣"
+ },
+ "红旗":{
+ "AREAID":"101180309",
+ "NAMECN":"红旗"
+ },
+ "卫滨":{
+ "AREAID":"101180310",
+ "NAMECN":"卫滨"
+ },
+ "凤泉":{
+ "AREAID":"101180311",
+ "NAMECN":"凤泉"
+ },
+ "牧野":{
+ "AREAID":"101180312",
+ "NAMECN":"牧野"
+ }
+ },
+ "许昌":{
+ "许昌":{
+ "AREAID":"101180401",
+ "NAMECN":"许昌"
+ },
+ "鄢陵":{
+ "AREAID":"101180402",
+ "NAMECN":"鄢陵"
+ },
+ "襄城":{
+ "AREAID":"101180403",
+ "NAMECN":"襄城"
+ },
+ "长葛":{
+ "AREAID":"101180404",
+ "NAMECN":"长葛"
+ },
+ "禹州":{
+ "AREAID":"101180405",
+ "NAMECN":"禹州"
+ },
+ "魏都":{
+ "AREAID":"101180406",
+ "NAMECN":"魏都"
+ },
+ "建安":{
+ "AREAID":"101180407",
+ "NAMECN":"建安"
+ }
+ },
+ "平顶山":{
+ "平顶山":{
+ "AREAID":"101180501",
+ "NAMECN":"平顶山"
+ },
+ "郏县":{
+ "AREAID":"101180502",
+ "NAMECN":"郏县"
+ },
+ "宝丰":{
+ "AREAID":"101180503",
+ "NAMECN":"宝丰"
+ },
+ "汝州":{
+ "AREAID":"101180504",
+ "NAMECN":"汝州"
+ },
+ "叶县":{
+ "AREAID":"101180505",
+ "NAMECN":"叶县"
+ },
+ "舞钢":{
+ "AREAID":"101180506",
+ "NAMECN":"舞钢"
+ },
+ "鲁山":{
+ "AREAID":"101180507",
+ "NAMECN":"鲁山"
+ },
+ "石龙":{
+ "AREAID":"101180508",
+ "NAMECN":"石龙"
+ },
+ "新华":{
+ "AREAID":"101180509",
+ "NAMECN":"新华"
+ },
+ "卫东":{
+ "AREAID":"101180510",
+ "NAMECN":"卫东"
+ },
+ "湛河":{
+ "AREAID":"101180511",
+ "NAMECN":"湛河"
+ }
+ },
+ "信阳":{
+ "信阳":{
+ "AREAID":"101180601",
+ "NAMECN":"信阳"
+ },
+ "息县":{
+ "AREAID":"101180602",
+ "NAMECN":"息县"
+ },
+ "罗山":{
+ "AREAID":"101180603",
+ "NAMECN":"罗山"
+ },
+ "光山":{
+ "AREAID":"101180604",
+ "NAMECN":"光山"
+ },
+ "新县":{
+ "AREAID":"101180605",
+ "NAMECN":"新县"
+ },
+ "淮滨":{
+ "AREAID":"101180606",
+ "NAMECN":"淮滨"
+ },
+ "潢川":{
+ "AREAID":"101180607",
+ "NAMECN":"潢川"
+ },
+ "固始":{
+ "AREAID":"101180608",
+ "NAMECN":"固始"
+ },
+ "商城":{
+ "AREAID":"101180609",
+ "NAMECN":"商城"
+ },
+ "浉河":{
+ "AREAID":"101180610",
+ "NAMECN":"浉河"
+ },
+ "平桥":{
+ "AREAID":"101180611",
+ "NAMECN":"平桥"
+ }
+ },
+ "南阳":{
+ "南阳":{
+ "AREAID":"101180701",
+ "NAMECN":"南阳"
+ },
+ "南召":{
+ "AREAID":"101180702",
+ "NAMECN":"南召"
+ },
+ "方城":{
+ "AREAID":"101180703",
+ "NAMECN":"方城"
+ },
+ "社旗":{
+ "AREAID":"101180704",
+ "NAMECN":"社旗"
+ },
+ "西峡":{
+ "AREAID":"101180705",
+ "NAMECN":"西峡"
+ },
+ "内乡":{
+ "AREAID":"101180706",
+ "NAMECN":"内乡"
+ },
+ "镇平":{
+ "AREAID":"101180707",
+ "NAMECN":"镇平"
+ },
+ "淅川":{
+ "AREAID":"101180708",
+ "NAMECN":"淅川"
+ },
+ "新野":{
+ "AREAID":"101180709",
+ "NAMECN":"新野"
+ },
+ "唐河":{
+ "AREAID":"101180710",
+ "NAMECN":"唐河"
+ },
+ "邓州":{
+ "AREAID":"101180711",
+ "NAMECN":"邓州"
+ },
+ "桐柏":{
+ "AREAID":"101180712",
+ "NAMECN":"桐柏"
+ },
+ "宛城":{
+ "AREAID":"101180713",
+ "NAMECN":"宛城"
+ },
+ "卧龙":{
+ "AREAID":"101180714",
+ "NAMECN":"卧龙"
+ }
+ },
+ "开封":{
+ "开封":{
+ "AREAID":"101180801",
+ "NAMECN":"开封"
+ },
+ "杞县":{
+ "AREAID":"101180802",
+ "NAMECN":"杞县"
+ },
+ "尉氏":{
+ "AREAID":"101180803",
+ "NAMECN":"尉氏"
+ },
+ "通许":{
+ "AREAID":"101180804",
+ "NAMECN":"通许"
+ },
+ "兰考":{
+ "AREAID":"101180805",
+ "NAMECN":"兰考"
+ },
+ "龙亭":{
+ "AREAID":"101180806",
+ "NAMECN":"龙亭"
+ },
+ "顺河":{
+ "AREAID":"101180807",
+ "NAMECN":"顺河"
+ },
+ "鼓楼":{
+ "AREAID":"101180808",
+ "NAMECN":"鼓楼"
+ },
+ "禹王台":{
+ "AREAID":"101180809",
+ "NAMECN":"禹王台"
+ },
+ "祥符":{
+ "AREAID":"101180810",
+ "NAMECN":"祥符"
+ }
+ },
+ "洛阳":{
+ "洛阳":{
+ "AREAID":"101180901",
+ "NAMECN":"洛阳"
+ },
+ "新安":{
+ "AREAID":"101180902",
+ "NAMECN":"新安"
+ },
+ "孟津":{
+ "AREAID":"101180903",
+ "NAMECN":"孟津"
+ },
+ "宜阳":{
+ "AREAID":"101180904",
+ "NAMECN":"宜阳"
+ },
+ "洛宁":{
+ "AREAID":"101180905",
+ "NAMECN":"洛宁"
+ },
+ "伊川":{
+ "AREAID":"101180906",
+ "NAMECN":"伊川"
+ },
+ "嵩县":{
+ "AREAID":"101180907",
+ "NAMECN":"嵩县"
+ },
+ "偃师":{
+ "AREAID":"101180908",
+ "NAMECN":"偃师"
+ },
+ "栾川":{
+ "AREAID":"101180909",
+ "NAMECN":"栾川"
+ },
+ "汝阳":{
+ "AREAID":"101180910",
+ "NAMECN":"汝阳"
+ },
+ "吉利":{
+ "AREAID":"101180911",
+ "NAMECN":"吉利"
+ },
+ "老城":{
+ "AREAID":"101180912",
+ "NAMECN":"老城"
+ },
+ "西工":{
+ "AREAID":"101180913",
+ "NAMECN":"西工"
+ },
+ "瀍河":{
+ "AREAID":"101180914",
+ "NAMECN":"瀍河"
+ },
+ "涧西":{
+ "AREAID":"101180915",
+ "NAMECN":"涧西"
+ },
+ "洛龙":{
+ "AREAID":"101180916",
+ "NAMECN":"洛龙"
+ }
+ },
+ "商丘":{
+ "商丘":{
+ "AREAID":"101181001",
+ "NAMECN":"商丘"
+ },
+ "梁园":{
+ "AREAID":"101181002",
+ "NAMECN":"梁园"
+ },
+ "睢县":{
+ "AREAID":"101181003",
+ "NAMECN":"睢县"
+ },
+ "民权":{
+ "AREAID":"101181004",
+ "NAMECN":"民权"
+ },
+ "虞城":{
+ "AREAID":"101181005",
+ "NAMECN":"虞城"
+ },
+ "柘城":{
+ "AREAID":"101181006",
+ "NAMECN":"柘城"
+ },
+ "宁陵":{
+ "AREAID":"101181007",
+ "NAMECN":"宁陵"
+ },
+ "夏邑":{
+ "AREAID":"101181008",
+ "NAMECN":"夏邑"
+ },
+ "永城":{
+ "AREAID":"101181009",
+ "NAMECN":"永城"
+ },
+ "睢阳":{
+ "AREAID":"101181010",
+ "NAMECN":"睢阳"
+ }
+ },
+ "焦作":{
+ "焦作":{
+ "AREAID":"101181101",
+ "NAMECN":"焦作"
+ },
+ "修武":{
+ "AREAID":"101181102",
+ "NAMECN":"修武"
+ },
+ "武陟":{
+ "AREAID":"101181103",
+ "NAMECN":"武陟"
+ },
+ "沁阳":{
+ "AREAID":"101181104",
+ "NAMECN":"沁阳"
+ },
+ "解放":{
+ "AREAID":"101181105",
+ "NAMECN":"解放"
+ },
+ "博爱":{
+ "AREAID":"101181106",
+ "NAMECN":"博爱"
+ },
+ "温县":{
+ "AREAID":"101181107",
+ "NAMECN":"温县"
+ },
+ "孟州":{
+ "AREAID":"101181108",
+ "NAMECN":"孟州"
+ },
+ "中站":{
+ "AREAID":"101181109",
+ "NAMECN":"中站"
+ },
+ "马村":{
+ "AREAID":"101181110",
+ "NAMECN":"马村"
+ },
+ "山阳":{
+ "AREAID":"101181111",
+ "NAMECN":"山阳"
+ }
+ },
+ "鹤壁":{
+ "鹤壁":{
+ "AREAID":"101181201",
+ "NAMECN":"鹤壁"
+ },
+ "浚县":{
+ "AREAID":"101181202",
+ "NAMECN":"浚县"
+ },
+ "淇县":{
+ "AREAID":"101181203",
+ "NAMECN":"淇县"
+ },
+ "鹤山":{
+ "AREAID":"101181204",
+ "NAMECN":"鹤山"
+ },
+ "山城":{
+ "AREAID":"101181205",
+ "NAMECN":"山城"
+ },
+ "淇滨":{
+ "AREAID":"101181206",
+ "NAMECN":"淇滨"
+ }
+ },
+ "濮阳":{
+ "濮阳":{
+ "AREAID":"101181301",
+ "NAMECN":"濮阳"
+ },
+ "台前":{
+ "AREAID":"101181302",
+ "NAMECN":"台前"
+ },
+ "南乐":{
+ "AREAID":"101181303",
+ "NAMECN":"南乐"
+ },
+ "清丰":{
+ "AREAID":"101181304",
+ "NAMECN":"清丰"
+ },
+ "范县":{
+ "AREAID":"101181305",
+ "NAMECN":"范县"
+ },
+ "华龙":{
+ "AREAID":"101181306",
+ "NAMECN":"华龙"
+ }
+ },
+ "周口":{
+ "周口":{
+ "AREAID":"101181401",
+ "NAMECN":"周口"
+ },
+ "扶沟":{
+ "AREAID":"101181402",
+ "NAMECN":"扶沟"
+ },
+ "太康":{
+ "AREAID":"101181403",
+ "NAMECN":"太康"
+ },
+ "淮阳":{
+ "AREAID":"101181404",
+ "NAMECN":"淮阳"
+ },
+ "西华":{
+ "AREAID":"101181405",
+ "NAMECN":"西华"
+ },
+ "商水":{
+ "AREAID":"101181406",
+ "NAMECN":"商水"
+ },
+ "项城":{
+ "AREAID":"101181407",
+ "NAMECN":"项城"
+ },
+ "郸城":{
+ "AREAID":"101181408",
+ "NAMECN":"郸城"
+ },
+ "鹿邑":{
+ "AREAID":"101181409",
+ "NAMECN":"鹿邑"
+ },
+ "沈丘":{
+ "AREAID":"101181410",
+ "NAMECN":"沈丘"
+ },
+ "川汇":{
+ "AREAID":"101181411",
+ "NAMECN":"川汇"
+ }
+ },
+ "漯河":{
+ "漯河":{
+ "AREAID":"101181501",
+ "NAMECN":"漯河"
+ },
+ "临颍":{
+ "AREAID":"101181502",
+ "NAMECN":"临颍"
+ },
+ "舞阳":{
+ "AREAID":"101181503",
+ "NAMECN":"舞阳"
+ },
+ "源汇":{
+ "AREAID":"101181504",
+ "NAMECN":"源汇"
+ },
+ "郾城":{
+ "AREAID":"101181505",
+ "NAMECN":"郾城"
+ },
+ "召陵":{
+ "AREAID":"101181506",
+ "NAMECN":"召陵"
+ }
+ },
+ "驻马店":{
+ "驻马店":{
+ "AREAID":"101181601",
+ "NAMECN":"驻马店"
+ },
+ "西平":{
+ "AREAID":"101181602",
+ "NAMECN":"西平"
+ },
+ "遂平":{
+ "AREAID":"101181603",
+ "NAMECN":"遂平"
+ },
+ "上蔡":{
+ "AREAID":"101181604",
+ "NAMECN":"上蔡"
+ },
+ "汝南":{
+ "AREAID":"101181605",
+ "NAMECN":"汝南"
+ },
+ "泌阳":{
+ "AREAID":"101181606",
+ "NAMECN":"泌阳"
+ },
+ "平舆":{
+ "AREAID":"101181607",
+ "NAMECN":"平舆"
+ },
+ "新蔡":{
+ "AREAID":"101181608",
+ "NAMECN":"新蔡"
+ },
+ "确山":{
+ "AREAID":"101181609",
+ "NAMECN":"确山"
+ },
+ "正阳":{
+ "AREAID":"101181610",
+ "NAMECN":"正阳"
+ },
+ "驿城":{
+ "AREAID":"101181611",
+ "NAMECN":"驿城"
+ }
+ },
+ "三门峡":{
+ "三门峡":{
+ "AREAID":"101181701",
+ "NAMECN":"三门峡"
+ },
+ "灵宝":{
+ "AREAID":"101181702",
+ "NAMECN":"灵宝"
+ },
+ "渑池":{
+ "AREAID":"101181703",
+ "NAMECN":"渑池"
+ },
+ "卢氏":{
+ "AREAID":"101181704",
+ "NAMECN":"卢氏"
+ },
+ "义马":{
+ "AREAID":"101181705",
+ "NAMECN":"义马"
+ },
+ "湖滨":{
+ "AREAID":"101181707",
+ "NAMECN":"湖滨"
+ },
+ "陕州":{
+ "AREAID":"101181708",
+ "NAMECN":"陕州"
+ }
+ },
+ "济源":{
+ "济源":{
+ "AREAID":"101181801",
+ "NAMECN":"济源"
+ }
+ }
+ },
+ "江苏":{
+ "南京":{
+ "南京":{
+ "AREAID":"101190101",
+ "NAMECN":"南京"
+ },
+ "溧水":{
+ "AREAID":"101190102",
+ "NAMECN":"溧水"
+ },
+ "高淳":{
+ "AREAID":"101190103",
+ "NAMECN":"高淳"
+ },
+ "江宁":{
+ "AREAID":"101190104",
+ "NAMECN":"江宁"
+ },
+ "六合":{
+ "AREAID":"101190105",
+ "NAMECN":"六合"
+ },
+ "浦口":{
+ "AREAID":"101190107",
+ "NAMECN":"浦口"
+ },
+ "玄武":{
+ "AREAID":"101190108",
+ "NAMECN":"玄武"
+ },
+ "秦淮":{
+ "AREAID":"101190109",
+ "NAMECN":"秦淮"
+ },
+ "建邺":{
+ "AREAID":"101190110",
+ "NAMECN":"建邺"
+ },
+ "鼓楼":{
+ "AREAID":"101190111",
+ "NAMECN":"鼓楼"
+ },
+ "栖霞":{
+ "AREAID":"101190112",
+ "NAMECN":"栖霞"
+ },
+ "雨花台":{
+ "AREAID":"101190113",
+ "NAMECN":"雨花台"
+ }
+ },
+ "无锡":{
+ "无锡":{
+ "AREAID":"101190201",
+ "NAMECN":"无锡"
+ },
+ "江阴":{
+ "AREAID":"101190202",
+ "NAMECN":"江阴"
+ },
+ "宜兴":{
+ "AREAID":"101190203",
+ "NAMECN":"宜兴"
+ },
+ "锡山":{
+ "AREAID":"101190204",
+ "NAMECN":"锡山"
+ },
+ "惠山":{
+ "AREAID":"101190205",
+ "NAMECN":"惠山"
+ },
+ "滨湖":{
+ "AREAID":"101190206",
+ "NAMECN":"滨湖"
+ },
+ "梁溪":{
+ "AREAID":"101190207",
+ "NAMECN":"梁溪"
+ },
+ "新吴":{
+ "AREAID":"101190208",
+ "NAMECN":"新吴"
+ }
+ },
+ "镇江":{
+ "镇江":{
+ "AREAID":"101190301",
+ "NAMECN":"镇江"
+ },
+ "丹阳":{
+ "AREAID":"101190302",
+ "NAMECN":"丹阳"
+ },
+ "扬中":{
+ "AREAID":"101190303",
+ "NAMECN":"扬中"
+ },
+ "句容":{
+ "AREAID":"101190304",
+ "NAMECN":"句容"
+ },
+ "丹徒":{
+ "AREAID":"101190305",
+ "NAMECN":"丹徒"
+ },
+ "京口":{
+ "AREAID":"101190306",
+ "NAMECN":"京口"
+ },
+ "润州":{
+ "AREAID":"101190307",
+ "NAMECN":"润州"
+ }
+ },
+ "苏州":{
+ "苏州":{
+ "AREAID":"101190401",
+ "NAMECN":"苏州"
+ },
+ "常熟":{
+ "AREAID":"101190402",
+ "NAMECN":"常熟"
+ },
+ "张家港":{
+ "AREAID":"101190403",
+ "NAMECN":"张家港"
+ },
+ "昆山":{
+ "AREAID":"101190404",
+ "NAMECN":"昆山"
+ },
+ "吴中":{
+ "AREAID":"101190405",
+ "NAMECN":"吴中"
+ },
+ "虎丘":{
+ "AREAID":"101190406",
+ "NAMECN":"虎丘"
+ },
+ "吴江":{
+ "AREAID":"101190407",
+ "NAMECN":"吴江"
+ },
+ "太仓":{
+ "AREAID":"101190408",
+ "NAMECN":"太仓"
+ },
+ "相城":{
+ "AREAID":"101190409",
+ "NAMECN":"相城"
+ },
+ "姑苏":{
+ "AREAID":"101190410",
+ "NAMECN":"姑苏"
+ }
+ },
+ "南通":{
+ "南通":{
+ "AREAID":"101190501",
+ "NAMECN":"南通"
+ },
+ "海安":{
+ "AREAID":"101190502",
+ "NAMECN":"海安"
+ },
+ "如皋":{
+ "AREAID":"101190503",
+ "NAMECN":"如皋"
+ },
+ "如东":{
+ "AREAID":"101190504",
+ "NAMECN":"如东"
+ },
+ "崇川":{
+ "AREAID":"101190505",
+ "NAMECN":"崇川"
+ },
+ "港闸":{
+ "AREAID":"101190506",
+ "NAMECN":"港闸"
+ },
+ "启东":{
+ "AREAID":"101190507",
+ "NAMECN":"启东"
+ },
+ "海门":{
+ "AREAID":"101190508",
+ "NAMECN":"海门"
+ },
+ "通州":{
+ "AREAID":"101190509",
+ "NAMECN":"通州"
+ }
+ },
+ "扬州":{
+ "扬州":{
+ "AREAID":"101190601",
+ "NAMECN":"扬州"
+ },
+ "宝应":{
+ "AREAID":"101190602",
+ "NAMECN":"宝应"
+ },
+ "仪征":{
+ "AREAID":"101190603",
+ "NAMECN":"仪征"
+ },
+ "高邮":{
+ "AREAID":"101190604",
+ "NAMECN":"高邮"
+ },
+ "江都":{
+ "AREAID":"101190605",
+ "NAMECN":"江都"
+ },
+ "邗江":{
+ "AREAID":"101190606",
+ "NAMECN":"邗江"
+ },
+ "广陵":{
+ "AREAID":"101190607",
+ "NAMECN":"广陵"
+ }
+ },
+ "盐城":{
+ "盐城":{
+ "AREAID":"101190701",
+ "NAMECN":"盐城"
+ },
+ "响水":{
+ "AREAID":"101190702",
+ "NAMECN":"响水"
+ },
+ "滨海":{
+ "AREAID":"101190703",
+ "NAMECN":"滨海"
+ },
+ "阜宁":{
+ "AREAID":"101190704",
+ "NAMECN":"阜宁"
+ },
+ "射阳":{
+ "AREAID":"101190705",
+ "NAMECN":"射阳"
+ },
+ "建湖":{
+ "AREAID":"101190706",
+ "NAMECN":"建湖"
+ },
+ "东台":{
+ "AREAID":"101190707",
+ "NAMECN":"东台"
+ },
+ "大丰":{
+ "AREAID":"101190708",
+ "NAMECN":"大丰"
+ },
+ "盐都":{
+ "AREAID":"101190709",
+ "NAMECN":"盐都"
+ },
+ "亭湖":{
+ "AREAID":"101190710",
+ "NAMECN":"亭湖"
+ }
+ },
+ "徐州":{
+ "徐州":{
+ "AREAID":"101190801",
+ "NAMECN":"徐州"
+ },
+ "铜山":{
+ "AREAID":"101190802",
+ "NAMECN":"铜山"
+ },
+ "丰县":{
+ "AREAID":"101190803",
+ "NAMECN":"丰县"
+ },
+ "沛县":{
+ "AREAID":"101190804",
+ "NAMECN":"沛县"
+ },
+ "邳州":{
+ "AREAID":"101190805",
+ "NAMECN":"邳州"
+ },
+ "睢宁":{
+ "AREAID":"101190806",
+ "NAMECN":"睢宁"
+ },
+ "新沂":{
+ "AREAID":"101190807",
+ "NAMECN":"新沂"
+ },
+ "鼓楼":{
+ "AREAID":"101190808",
+ "NAMECN":"鼓楼"
+ },
+ "云龙":{
+ "AREAID":"101190809",
+ "NAMECN":"云龙"
+ },
+ "贾汪":{
+ "AREAID":"101190810",
+ "NAMECN":"贾汪"
+ },
+ "泉山":{
+ "AREAID":"101190811",
+ "NAMECN":"泉山"
+ }
+ },
+ "淮安":{
+ "淮安":{
+ "AREAID":"101190901",
+ "NAMECN":"淮安"
+ },
+ "金湖":{
+ "AREAID":"101190902",
+ "NAMECN":"金湖"
+ },
+ "盱眙":{
+ "AREAID":"101190903",
+ "NAMECN":"盱眙"
+ },
+ "洪泽":{
+ "AREAID":"101190904",
+ "NAMECN":"洪泽"
+ },
+ "涟水":{
+ "AREAID":"101190905",
+ "NAMECN":"涟水"
+ },
+ "淮阴区":{
+ "AREAID":"101190906",
+ "NAMECN":"淮阴区"
+ },
+ "清江浦":{
+ "AREAID":"101190907",
+ "NAMECN":"清江浦"
+ },
+ "淮安区":{
+ "AREAID":"101190908",
+ "NAMECN":"淮安区"
+ }
+ },
+ "连云港":{
+ "连云港":{
+ "AREAID":"101191001",
+ "NAMECN":"连云港"
+ },
+ "东海":{
+ "AREAID":"101191002",
+ "NAMECN":"东海"
+ },
+ "赣榆":{
+ "AREAID":"101191003",
+ "NAMECN":"赣榆"
+ },
+ "灌云":{
+ "AREAID":"101191004",
+ "NAMECN":"灌云"
+ },
+ "灌南":{
+ "AREAID":"101191005",
+ "NAMECN":"灌南"
+ },
+ "海州":{
+ "AREAID":"101191006",
+ "NAMECN":"海州"
+ },
+ "连云":{
+ "AREAID":"101191007",
+ "NAMECN":"连云"
+ }
+ },
+ "常州":{
+ "常州":{
+ "AREAID":"101191101",
+ "NAMECN":"常州"
+ },
+ "溧阳":{
+ "AREAID":"101191102",
+ "NAMECN":"溧阳"
+ },
+ "金坛":{
+ "AREAID":"101191103",
+ "NAMECN":"金坛"
+ },
+ "武进":{
+ "AREAID":"101191104",
+ "NAMECN":"武进"
+ },
+ "天宁":{
+ "AREAID":"101191105",
+ "NAMECN":"天宁"
+ },
+ "钟楼":{
+ "AREAID":"101191106",
+ "NAMECN":"钟楼"
+ },
+ "新北":{
+ "AREAID":"101191107",
+ "NAMECN":"新北"
+ }
+ },
+ "泰州":{
+ "泰州":{
+ "AREAID":"101191201",
+ "NAMECN":"泰州"
+ },
+ "兴化":{
+ "AREAID":"101191202",
+ "NAMECN":"兴化"
+ },
+ "泰兴":{
+ "AREAID":"101191203",
+ "NAMECN":"泰兴"
+ },
+ "姜堰":{
+ "AREAID":"101191204",
+ "NAMECN":"姜堰"
+ },
+ "靖江":{
+ "AREAID":"101191205",
+ "NAMECN":"靖江"
+ },
+ "海陵":{
+ "AREAID":"101191206",
+ "NAMECN":"海陵"
+ },
+ "高港":{
+ "AREAID":"101191207",
+ "NAMECN":"高港"
+ }
+ },
+ "宿迁":{
+ "宿迁":{
+ "AREAID":"101191301",
+ "NAMECN":"宿迁"
+ },
+ "沭阳":{
+ "AREAID":"101191302",
+ "NAMECN":"沭阳"
+ },
+ "泗阳":{
+ "AREAID":"101191303",
+ "NAMECN":"泗阳"
+ },
+ "泗洪":{
+ "AREAID":"101191304",
+ "NAMECN":"泗洪"
+ },
+ "宿豫":{
+ "AREAID":"101191305",
+ "NAMECN":"宿豫"
+ },
+ "宿城":{
+ "AREAID":"101191306",
+ "NAMECN":"宿城"
+ }
+ }
+ },
+ "湖北":{
+ "武汉":{
+ "武汉":{
+ "AREAID":"101200101",
+ "NAMECN":"武汉"
+ },
+ "蔡甸":{
+ "AREAID":"101200102",
+ "NAMECN":"蔡甸"
+ },
+ "黄陂":{
+ "AREAID":"101200103",
+ "NAMECN":"黄陂"
+ },
+ "新洲":{
+ "AREAID":"101200104",
+ "NAMECN":"新洲"
+ },
+ "江夏":{
+ "AREAID":"101200105",
+ "NAMECN":"江夏"
+ },
+ "东西湖":{
+ "AREAID":"101200106",
+ "NAMECN":"东西湖"
+ },
+ "江岸":{
+ "AREAID":"101200107",
+ "NAMECN":"江岸"
+ },
+ "江汉":{
+ "AREAID":"101200108",
+ "NAMECN":"江汉"
+ },
+ "硚口":{
+ "AREAID":"101200109",
+ "NAMECN":"硚口"
+ },
+ "汉阳":{
+ "AREAID":"101200110",
+ "NAMECN":"汉阳"
+ },
+ "武昌":{
+ "AREAID":"101200111",
+ "NAMECN":"武昌"
+ },
+ "青山":{
+ "AREAID":"101200112",
+ "NAMECN":"青山"
+ },
+ "洪山":{
+ "AREAID":"101200113",
+ "NAMECN":"洪山"
+ },
+ "汉南":{
+ "AREAID":"101200114",
+ "NAMECN":"汉南"
+ }
+ },
+ "襄阳":{
+ "襄阳":{
+ "AREAID":"101200201",
+ "NAMECN":"襄阳"
+ },
+ "襄州":{
+ "AREAID":"101200202",
+ "NAMECN":"襄州"
+ },
+ "保康":{
+ "AREAID":"101200203",
+ "NAMECN":"保康"
+ },
+ "南漳":{
+ "AREAID":"101200204",
+ "NAMECN":"南漳"
+ },
+ "宜城":{
+ "AREAID":"101200205",
+ "NAMECN":"宜城"
+ },
+ "老河口":{
+ "AREAID":"101200206",
+ "NAMECN":"老河口"
+ },
+ "谷城":{
+ "AREAID":"101200207",
+ "NAMECN":"谷城"
+ },
+ "枣阳":{
+ "AREAID":"101200208",
+ "NAMECN":"枣阳"
+ },
+ "襄城":{
+ "AREAID":"101200209",
+ "NAMECN":"襄城"
+ },
+ "樊城":{
+ "AREAID":"101200210",
+ "NAMECN":"樊城"
+ }
+ },
+ "鄂州":{
+ "鄂州":{
+ "AREAID":"101200301",
+ "NAMECN":"鄂州"
+ },
+ "梁子湖":{
+ "AREAID":"101200302",
+ "NAMECN":"梁子湖"
+ },
+ "华容":{
+ "AREAID":"101200303",
+ "NAMECN":"华容"
+ },
+ "鄂城":{
+ "AREAID":"101200304",
+ "NAMECN":"鄂城"
+ }
+ },
+ "孝感":{
+ "孝感":{
+ "AREAID":"101200401",
+ "NAMECN":"孝感"
+ },
+ "安陆":{
+ "AREAID":"101200402",
+ "NAMECN":"安陆"
+ },
+ "云梦":{
+ "AREAID":"101200403",
+ "NAMECN":"云梦"
+ },
+ "大悟":{
+ "AREAID":"101200404",
+ "NAMECN":"大悟"
+ },
+ "应城":{
+ "AREAID":"101200405",
+ "NAMECN":"应城"
+ },
+ "汉川":{
+ "AREAID":"101200406",
+ "NAMECN":"汉川"
+ },
+ "孝昌":{
+ "AREAID":"101200407",
+ "NAMECN":"孝昌"
+ },
+ "孝南":{
+ "AREAID":"101200408",
+ "NAMECN":"孝南"
+ }
+ },
+ "黄冈":{
+ "黄冈":{
+ "AREAID":"101200501",
+ "NAMECN":"黄冈"
+ },
+ "红安":{
+ "AREAID":"101200502",
+ "NAMECN":"红安"
+ },
+ "麻城":{
+ "AREAID":"101200503",
+ "NAMECN":"麻城"
+ },
+ "罗田":{
+ "AREAID":"101200504",
+ "NAMECN":"罗田"
+ },
+ "英山":{
+ "AREAID":"101200505",
+ "NAMECN":"英山"
+ },
+ "浠水":{
+ "AREAID":"101200506",
+ "NAMECN":"浠水"
+ },
+ "蕲春":{
+ "AREAID":"101200507",
+ "NAMECN":"蕲春"
+ },
+ "黄梅":{
+ "AREAID":"101200508",
+ "NAMECN":"黄梅"
+ },
+ "武穴":{
+ "AREAID":"101200509",
+ "NAMECN":"武穴"
+ },
+ "团风":{
+ "AREAID":"101200510",
+ "NAMECN":"团风"
+ },
+ "黄州":{
+ "AREAID":"101200511",
+ "NAMECN":"黄州"
+ }
+ },
+ "黄石":{
+ "黄石":{
+ "AREAID":"101200601",
+ "NAMECN":"黄石"
+ },
+ "大冶":{
+ "AREAID":"101200602",
+ "NAMECN":"大冶"
+ },
+ "阳新":{
+ "AREAID":"101200603",
+ "NAMECN":"阳新"
+ },
+ "铁山":{
+ "AREAID":"101200604",
+ "NAMECN":"铁山"
+ },
+ "下陆":{
+ "AREAID":"101200605",
+ "NAMECN":"下陆"
+ },
+ "西塞山":{
+ "AREAID":"101200606",
+ "NAMECN":"西塞山"
+ },
+ "黄石港":{
+ "AREAID":"101200607",
+ "NAMECN":"黄石港"
+ }
+ },
+ "咸宁":{
+ "咸宁":{
+ "AREAID":"101200701",
+ "NAMECN":"咸宁"
+ },
+ "赤壁":{
+ "AREAID":"101200702",
+ "NAMECN":"赤壁"
+ },
+ "嘉鱼":{
+ "AREAID":"101200703",
+ "NAMECN":"嘉鱼"
+ },
+ "崇阳":{
+ "AREAID":"101200704",
+ "NAMECN":"崇阳"
+ },
+ "通城":{
+ "AREAID":"101200705",
+ "NAMECN":"通城"
+ },
+ "通山":{
+ "AREAID":"101200706",
+ "NAMECN":"通山"
+ },
+ "咸安":{
+ "AREAID":"101200707",
+ "NAMECN":"咸安"
+ }
+ },
+ "荆州":{
+ "荆州":{
+ "AREAID":"101200801",
+ "NAMECN":"荆州"
+ },
+ "江陵":{
+ "AREAID":"101200802",
+ "NAMECN":"江陵"
+ },
+ "公安":{
+ "AREAID":"101200803",
+ "NAMECN":"公安"
+ },
+ "石首":{
+ "AREAID":"101200804",
+ "NAMECN":"石首"
+ },
+ "监利":{
+ "AREAID":"101200805",
+ "NAMECN":"监利"
+ },
+ "洪湖":{
+ "AREAID":"101200806",
+ "NAMECN":"洪湖"
+ },
+ "松滋":{
+ "AREAID":"101200807",
+ "NAMECN":"松滋"
+ },
+ "沙市":{
+ "AREAID":"101200808",
+ "NAMECN":"沙市"
+ }
+ },
+ "宜昌":{
+ "宜昌":{
+ "AREAID":"101200901",
+ "NAMECN":"宜昌"
+ },
+ "远安":{
+ "AREAID":"101200902",
+ "NAMECN":"远安"
+ },
+ "秭归":{
+ "AREAID":"101200903",
+ "NAMECN":"秭归"
+ },
+ "兴山":{
+ "AREAID":"101200904",
+ "NAMECN":"兴山"
+ },
+ "西陵":{
+ "AREAID":"101200905",
+ "NAMECN":"西陵"
+ },
+ "五峰":{
+ "AREAID":"101200906",
+ "NAMECN":"五峰"
+ },
+ "当阳":{
+ "AREAID":"101200907",
+ "NAMECN":"当阳"
+ },
+ "长阳":{
+ "AREAID":"101200908",
+ "NAMECN":"长阳"
+ },
+ "宜都":{
+ "AREAID":"101200909",
+ "NAMECN":"宜都"
+ },
+ "枝江":{
+ "AREAID":"101200910",
+ "NAMECN":"枝江"
+ },
+ "三峡":{
+ "AREAID":"101200911",
+ "NAMECN":"三峡"
+ },
+ "夷陵":{
+ "AREAID":"101200912",
+ "NAMECN":"夷陵"
+ },
+ "伍家岗":{
+ "AREAID":"101200913",
+ "NAMECN":"伍家岗"
+ },
+ "点军":{
+ "AREAID":"101200914",
+ "NAMECN":"点军"
+ },
+ "猇亭":{
+ "AREAID":"101200915",
+ "NAMECN":"猇亭"
+ }
+ },
+ "恩施":{
+ "恩施":{
+ "AREAID":"101201001",
+ "NAMECN":"恩施"
+ },
+ "利川":{
+ "AREAID":"101201002",
+ "NAMECN":"利川"
+ },
+ "建始":{
+ "AREAID":"101201003",
+ "NAMECN":"建始"
+ },
+ "咸丰":{
+ "AREAID":"101201004",
+ "NAMECN":"咸丰"
+ },
+ "宣恩":{
+ "AREAID":"101201005",
+ "NAMECN":"宣恩"
+ },
+ "鹤峰":{
+ "AREAID":"101201006",
+ "NAMECN":"鹤峰"
+ },
+ "来凤":{
+ "AREAID":"101201007",
+ "NAMECN":"来凤"
+ },
+ "巴东":{
+ "AREAID":"101201008",
+ "NAMECN":"巴东"
+ }
+ },
+ "十堰":{
+ "十堰":{
+ "AREAID":"101201101",
+ "NAMECN":"十堰"
+ },
+ "竹溪":{
+ "AREAID":"101201102",
+ "NAMECN":"竹溪"
+ },
+ "郧西":{
+ "AREAID":"101201103",
+ "NAMECN":"郧西"
+ },
+ "郧阳":{
+ "AREAID":"101201104",
+ "NAMECN":"郧阳"
+ },
+ "竹山":{
+ "AREAID":"101201105",
+ "NAMECN":"竹山"
+ },
+ "房县":{
+ "AREAID":"101201106",
+ "NAMECN":"房县"
+ },
+ "丹江口":{
+ "AREAID":"101201107",
+ "NAMECN":"丹江口"
+ },
+ "茅箭":{
+ "AREAID":"101201108",
+ "NAMECN":"茅箭"
+ },
+ "张湾":{
+ "AREAID":"101201109",
+ "NAMECN":"张湾"
+ }
+ },
+ "神农架":{
+ "神农架":{
+ "AREAID":"101201201",
+ "NAMECN":"神农架"
+ }
+ },
+ "随州":{
+ "随州":{
+ "AREAID":"101201301",
+ "NAMECN":"随州"
+ },
+ "广水":{
+ "AREAID":"101201302",
+ "NAMECN":"广水"
+ },
+ "曾都":{
+ "AREAID":"101201303",
+ "NAMECN":"曾都"
+ },
+ "随县":{
+ "AREAID":"101201304",
+ "NAMECN":"随县"
+ }
+ },
+ "荆门":{
+ "荆门":{
+ "AREAID":"101201401",
+ "NAMECN":"荆门"
+ },
+ "钟祥":{
+ "AREAID":"101201402",
+ "NAMECN":"钟祥"
+ },
+ "京山":{
+ "AREAID":"101201403",
+ "NAMECN":"京山"
+ },
+ "掇刀":{
+ "AREAID":"101201404",
+ "NAMECN":"掇刀"
+ },
+ "沙洋":{
+ "AREAID":"101201405",
+ "NAMECN":"沙洋"
+ },
+ "东宝":{
+ "AREAID":"101201406",
+ "NAMECN":"东宝"
+ }
+ },
+ "天门":{
+ "天门":{
+ "AREAID":"101201501",
+ "NAMECN":"天门"
+ }
+ },
+ "仙桃":{
+ "仙桃":{
+ "AREAID":"101201601",
+ "NAMECN":"仙桃"
+ }
+ },
+ "潜江":{
+ "潜江":{
+ "AREAID":"101201701",
+ "NAMECN":"潜江"
+ }
+ }
+ },
+ "浙江":{
+ "杭州":{
+ "杭州":{
+ "AREAID":"101210101",
+ "NAMECN":"杭州"
+ },
+ "萧山":{
+ "AREAID":"101210102",
+ "NAMECN":"萧山"
+ },
+ "桐庐":{
+ "AREAID":"101210103",
+ "NAMECN":"桐庐"
+ },
+ "淳安":{
+ "AREAID":"101210104",
+ "NAMECN":"淳安"
+ },
+ "建德":{
+ "AREAID":"101210105",
+ "NAMECN":"建德"
+ },
+ "余杭":{
+ "AREAID":"101210106",
+ "NAMECN":"余杭"
+ },
+ "临安":{
+ "AREAID":"101210107",
+ "NAMECN":"临安"
+ },
+ "富阳":{
+ "AREAID":"101210108",
+ "NAMECN":"富阳"
+ },
+ "上城":{
+ "AREAID":"101210109",
+ "NAMECN":"上城"
+ },
+ "下城":{
+ "AREAID":"101210110",
+ "NAMECN":"下城"
+ },
+ "江干":{
+ "AREAID":"101210111",
+ "NAMECN":"江干"
+ },
+ "拱墅":{
+ "AREAID":"101210112",
+ "NAMECN":"拱墅"
+ },
+ "西湖":{
+ "AREAID":"101210113",
+ "NAMECN":"西湖"
+ },
+ "滨江":{
+ "AREAID":"101210114",
+ "NAMECN":"滨江"
+ }
+ },
+ "湖州":{
+ "湖州":{
+ "AREAID":"101210201",
+ "NAMECN":"湖州"
+ },
+ "长兴":{
+ "AREAID":"101210202",
+ "NAMECN":"长兴"
+ },
+ "安吉":{
+ "AREAID":"101210203",
+ "NAMECN":"安吉"
+ },
+ "德清":{
+ "AREAID":"101210204",
+ "NAMECN":"德清"
+ },
+ "吴兴":{
+ "AREAID":"101210205",
+ "NAMECN":"吴兴"
+ },
+ "南浔":{
+ "AREAID":"101210206",
+ "NAMECN":"南浔"
+ }
+ },
+ "嘉兴":{
+ "嘉兴":{
+ "AREAID":"101210301",
+ "NAMECN":"嘉兴"
+ },
+ "嘉善":{
+ "AREAID":"101210302",
+ "NAMECN":"嘉善"
+ },
+ "海宁":{
+ "AREAID":"101210303",
+ "NAMECN":"海宁"
+ },
+ "桐乡":{
+ "AREAID":"101210304",
+ "NAMECN":"桐乡"
+ },
+ "平湖":{
+ "AREAID":"101210305",
+ "NAMECN":"平湖"
+ },
+ "海盐":{
+ "AREAID":"101210306",
+ "NAMECN":"海盐"
+ },
+ "南湖":{
+ "AREAID":"101210307",
+ "NAMECN":"南湖"
+ },
+ "秀洲":{
+ "AREAID":"101210308",
+ "NAMECN":"秀洲"
+ }
+ },
+ "宁波":{
+ "宁波":{
+ "AREAID":"101210401",
+ "NAMECN":"宁波"
+ },
+ "海曙":{
+ "AREAID":"101210402",
+ "NAMECN":"海曙"
+ },
+ "慈溪":{
+ "AREAID":"101210403",
+ "NAMECN":"慈溪"
+ },
+ "余姚":{
+ "AREAID":"101210404",
+ "NAMECN":"余姚"
+ },
+ "奉化":{
+ "AREAID":"101210405",
+ "NAMECN":"奉化"
+ },
+ "象山":{
+ "AREAID":"101210406",
+ "NAMECN":"象山"
+ },
+ "宁海":{
+ "AREAID":"101210408",
+ "NAMECN":"宁海"
+ },
+ "江北":{
+ "AREAID":"101210409",
+ "NAMECN":"江北"
+ },
+ "北仑":{
+ "AREAID":"101210410",
+ "NAMECN":"北仑"
+ },
+ "鄞州":{
+ "AREAID":"101210411",
+ "NAMECN":"鄞州"
+ },
+ "镇海":{
+ "AREAID":"101210412",
+ "NAMECN":"镇海"
+ }
+ },
+ "绍兴":{
+ "越城":{
+ "AREAID":"101210501",
+ "NAMECN":"越城"
+ },
+ "诸暨":{
+ "AREAID":"101210502",
+ "NAMECN":"诸暨"
+ },
+ "上虞":{
+ "AREAID":"101210503",
+ "NAMECN":"上虞"
+ },
+ "新昌":{
+ "AREAID":"101210504",
+ "NAMECN":"新昌"
+ },
+ "嵊州":{
+ "AREAID":"101210505",
+ "NAMECN":"嵊州"
+ },
+ "柯桥":{
+ "AREAID":"101210506",
+ "NAMECN":"柯桥"
+ },
+ "绍兴":{
+ "AREAID":"101210507",
+ "NAMECN":"绍兴"
+ }
+ },
+ "台州":{
+ "台州":{
+ "AREAID":"101210601",
+ "NAMECN":"台州"
+ },
+ "玉环":{
+ "AREAID":"101210603",
+ "NAMECN":"玉环"
+ },
+ "三门":{
+ "AREAID":"101210604",
+ "NAMECN":"三门"
+ },
+ "天台":{
+ "AREAID":"101210605",
+ "NAMECN":"天台"
+ },
+ "仙居":{
+ "AREAID":"101210606",
+ "NAMECN":"仙居"
+ },
+ "温岭":{
+ "AREAID":"101210607",
+ "NAMECN":"温岭"
+ },
+ "临海":{
+ "AREAID":"101210610",
+ "NAMECN":"临海"
+ },
+ "椒江":{
+ "AREAID":"101210611",
+ "NAMECN":"椒江"
+ },
+ "黄岩":{
+ "AREAID":"101210612",
+ "NAMECN":"黄岩"
+ },
+ "路桥":{
+ "AREAID":"101210613",
+ "NAMECN":"路桥"
+ }
+ },
+ "温州":{
+ "温州":{
+ "AREAID":"101210701",
+ "NAMECN":"温州"
+ },
+ "泰顺":{
+ "AREAID":"101210702",
+ "NAMECN":"泰顺"
+ },
+ "文成":{
+ "AREAID":"101210703",
+ "NAMECN":"文成"
+ },
+ "平阳":{
+ "AREAID":"101210704",
+ "NAMECN":"平阳"
+ },
+ "瑞安":{
+ "AREAID":"101210705",
+ "NAMECN":"瑞安"
+ },
+ "洞头":{
+ "AREAID":"101210706",
+ "NAMECN":"洞头"
+ },
+ "乐清":{
+ "AREAID":"101210707",
+ "NAMECN":"乐清"
+ },
+ "永嘉":{
+ "AREAID":"101210708",
+ "NAMECN":"永嘉"
+ },
+ "苍南":{
+ "AREAID":"101210709",
+ "NAMECN":"苍南"
+ },
+ "鹿城":{
+ "AREAID":"101210710",
+ "NAMECN":"鹿城"
+ },
+ "龙湾":{
+ "AREAID":"101210711",
+ "NAMECN":"龙湾"
+ },
+ "瓯海":{
+ "AREAID":"101210712",
+ "NAMECN":"瓯海"
+ }
+ },
+ "丽水":{
+ "丽水":{
+ "AREAID":"101210801",
+ "NAMECN":"丽水"
+ },
+ "遂昌":{
+ "AREAID":"101210802",
+ "NAMECN":"遂昌"
+ },
+ "龙泉":{
+ "AREAID":"101210803",
+ "NAMECN":"龙泉"
+ },
+ "缙云":{
+ "AREAID":"101210804",
+ "NAMECN":"缙云"
+ },
+ "青田":{
+ "AREAID":"101210805",
+ "NAMECN":"青田"
+ },
+ "云和":{
+ "AREAID":"101210806",
+ "NAMECN":"云和"
+ },
+ "庆元":{
+ "AREAID":"101210807",
+ "NAMECN":"庆元"
+ },
+ "松阳":{
+ "AREAID":"101210808",
+ "NAMECN":"松阳"
+ },
+ "景宁":{
+ "AREAID":"101210809",
+ "NAMECN":"景宁"
+ },
+ "莲都":{
+ "AREAID":"101210810",
+ "NAMECN":"莲都"
+ }
+ },
+ "金华":{
+ "金华":{
+ "AREAID":"101210901",
+ "NAMECN":"金华"
+ },
+ "浦江":{
+ "AREAID":"101210902",
+ "NAMECN":"浦江"
+ },
+ "兰溪":{
+ "AREAID":"101210903",
+ "NAMECN":"兰溪"
+ },
+ "义乌":{
+ "AREAID":"101210904",
+ "NAMECN":"义乌"
+ },
+ "东阳":{
+ "AREAID":"101210905",
+ "NAMECN":"东阳"
+ },
+ "武义":{
+ "AREAID":"101210906",
+ "NAMECN":"武义"
+ },
+ "永康":{
+ "AREAID":"101210907",
+ "NAMECN":"永康"
+ },
+ "磐安":{
+ "AREAID":"101210908",
+ "NAMECN":"磐安"
+ },
+ "婺城":{
+ "AREAID":"101210909",
+ "NAMECN":"婺城"
+ },
+ "金东":{
+ "AREAID":"101210910",
+ "NAMECN":"金东"
+ }
+ },
+ "衢州":{
+ "衢州":{
+ "AREAID":"101211001",
+ "NAMECN":"衢州"
+ },
+ "常山":{
+ "AREAID":"101211002",
+ "NAMECN":"常山"
+ },
+ "开化":{
+ "AREAID":"101211003",
+ "NAMECN":"开化"
+ },
+ "龙游":{
+ "AREAID":"101211004",
+ "NAMECN":"龙游"
+ },
+ "江山":{
+ "AREAID":"101211005",
+ "NAMECN":"江山"
+ },
+ "衢江":{
+ "AREAID":"101211006",
+ "NAMECN":"衢江"
+ },
+ "柯城":{
+ "AREAID":"101211007",
+ "NAMECN":"柯城"
+ }
+ },
+ "舟山":{
+ "舟山":{
+ "AREAID":"101211101",
+ "NAMECN":"舟山"
+ },
+ "嵊泗":{
+ "AREAID":"101211102",
+ "NAMECN":"嵊泗"
+ },
+ "岱山":{
+ "AREAID":"101211104",
+ "NAMECN":"岱山"
+ },
+ "普陀":{
+ "AREAID":"101211105",
+ "NAMECN":"普陀"
+ },
+ "定海":{
+ "AREAID":"101211106",
+ "NAMECN":"定海"
+ }
+ }
+ },
+ "安徽":{
+ "合肥":{
+ "合肥":{
+ "AREAID":"101220101",
+ "NAMECN":"合肥"
+ },
+ "长丰":{
+ "AREAID":"101220102",
+ "NAMECN":"长丰"
+ },
+ "肥东":{
+ "AREAID":"101220103",
+ "NAMECN":"肥东"
+ },
+ "肥西":{
+ "AREAID":"101220104",
+ "NAMECN":"肥西"
+ },
+ "巢湖":{
+ "AREAID":"101220105",
+ "NAMECN":"巢湖"
+ },
+ "庐江":{
+ "AREAID":"101220106",
+ "NAMECN":"庐江"
+ },
+ "瑶海":{
+ "AREAID":"101220107",
+ "NAMECN":"瑶海"
+ },
+ "庐阳":{
+ "AREAID":"101220108",
+ "NAMECN":"庐阳"
+ },
+ "蜀山":{
+ "AREAID":"101220109",
+ "NAMECN":"蜀山"
+ },
+ "包河":{
+ "AREAID":"101220110",
+ "NAMECN":"包河"
+ }
+ },
+ "蚌埠":{
+ "蚌埠":{
+ "AREAID":"101220201",
+ "NAMECN":"蚌埠"
+ },
+ "怀远":{
+ "AREAID":"101220202",
+ "NAMECN":"怀远"
+ },
+ "固镇":{
+ "AREAID":"101220203",
+ "NAMECN":"固镇"
+ },
+ "五河":{
+ "AREAID":"101220204",
+ "NAMECN":"五河"
+ },
+ "龙子湖":{
+ "AREAID":"101220205",
+ "NAMECN":"龙子湖"
+ },
+ "蚌山":{
+ "AREAID":"101220206",
+ "NAMECN":"蚌山"
+ },
+ "禹会":{
+ "AREAID":"101220207",
+ "NAMECN":"禹会"
+ },
+ "淮上":{
+ "AREAID":"101220208",
+ "NAMECN":"淮上"
+ }
+ },
+ "芜湖":{
+ "芜湖":{
+ "AREAID":"101220301",
+ "NAMECN":"芜湖"
+ },
+ "繁昌":{
+ "AREAID":"101220302",
+ "NAMECN":"繁昌"
+ },
+ "芜湖县":{
+ "AREAID":"101220303",
+ "NAMECN":"芜湖县"
+ },
+ "南陵":{
+ "AREAID":"101220304",
+ "NAMECN":"南陵"
+ },
+ "无为":{
+ "AREAID":"101220305",
+ "NAMECN":"无为"
+ },
+ "镜湖":{
+ "AREAID":"101220306",
+ "NAMECN":"镜湖"
+ },
+ "弋江":{
+ "AREAID":"101220307",
+ "NAMECN":"弋江"
+ },
+ "鸠江":{
+ "AREAID":"101220308",
+ "NAMECN":"鸠江"
+ },
+ "三山":{
+ "AREAID":"101220309",
+ "NAMECN":"三山"
+ }
+ },
+ "淮南":{
+ "淮南":{
+ "AREAID":"101220401",
+ "NAMECN":"淮南"
+ },
+ "凤台":{
+ "AREAID":"101220402",
+ "NAMECN":"凤台"
+ },
+ "潘集":{
+ "AREAID":"101220403",
+ "NAMECN":"潘集"
+ },
+ "大通":{
+ "AREAID":"101220404",
+ "NAMECN":"大通"
+ },
+ "田家庵":{
+ "AREAID":"101220405",
+ "NAMECN":"田家庵"
+ },
+ "谢家集":{
+ "AREAID":"101220406",
+ "NAMECN":"谢家集"
+ },
+ "八公山":{
+ "AREAID":"101220407",
+ "NAMECN":"八公山"
+ },
+ "寿县":{
+ "AREAID":"101220408",
+ "NAMECN":"寿县"
+ }
+ },
+ "马鞍山":{
+ "马鞍山":{
+ "AREAID":"101220501",
+ "NAMECN":"马鞍山"
+ },
+ "当涂":{
+ "AREAID":"101220502",
+ "NAMECN":"当涂"
+ },
+ "含山":{
+ "AREAID":"101220503",
+ "NAMECN":"含山"
+ },
+ "和县":{
+ "AREAID":"101220504",
+ "NAMECN":"和县"
+ },
+ "花山":{
+ "AREAID":"101220505",
+ "NAMECN":"花山"
+ },
+ "雨山":{
+ "AREAID":"101220506",
+ "NAMECN":"雨山"
+ },
+ "博望":{
+ "AREAID":"101220507",
+ "NAMECN":"博望"
+ }
+ },
+ "安庆":{
+ "安庆":{
+ "AREAID":"101220601",
+ "NAMECN":"安庆"
+ },
+ "太湖":{
+ "AREAID":"101220603",
+ "NAMECN":"太湖"
+ },
+ "潜山":{
+ "AREAID":"101220604",
+ "NAMECN":"潜山"
+ },
+ "怀宁":{
+ "AREAID":"101220605",
+ "NAMECN":"怀宁"
+ },
+ "宿松":{
+ "AREAID":"101220606",
+ "NAMECN":"宿松"
+ },
+ "望江":{
+ "AREAID":"101220607",
+ "NAMECN":"望江"
+ },
+ "岳西":{
+ "AREAID":"101220608",
+ "NAMECN":"岳西"
+ },
+ "桐城":{
+ "AREAID":"101220609",
+ "NAMECN":"桐城"
+ },
+ "迎江":{
+ "AREAID":"101220610",
+ "NAMECN":"迎江"
+ },
+ "大观":{
+ "AREAID":"101220611",
+ "NAMECN":"大观"
+ },
+ "宜秀":{
+ "AREAID":"101220612",
+ "NAMECN":"宜秀"
+ }
+ },
+ "宿州":{
+ "宿州":{
+ "AREAID":"101220701",
+ "NAMECN":"宿州"
+ },
+ "砀山":{
+ "AREAID":"101220702",
+ "NAMECN":"砀山"
+ },
+ "灵璧":{
+ "AREAID":"101220703",
+ "NAMECN":"灵璧"
+ },
+ "泗县":{
+ "AREAID":"101220704",
+ "NAMECN":"泗县"
+ },
+ "萧县":{
+ "AREAID":"101220705",
+ "NAMECN":"萧县"
+ },
+ "埇桥":{
+ "AREAID":"101220706",
+ "NAMECN":"埇桥"
+ }
+ },
+ "阜阳":{
+ "阜阳":{
+ "AREAID":"101220801",
+ "NAMECN":"阜阳"
+ },
+ "阜南":{
+ "AREAID":"101220802",
+ "NAMECN":"阜南"
+ },
+ "颍上":{
+ "AREAID":"101220803",
+ "NAMECN":"颍上"
+ },
+ "临泉":{
+ "AREAID":"101220804",
+ "NAMECN":"临泉"
+ },
+ "界首":{
+ "AREAID":"101220805",
+ "NAMECN":"界首"
+ },
+ "太和":{
+ "AREAID":"101220806",
+ "NAMECN":"太和"
+ },
+ "颍州":{
+ "AREAID":"101220807",
+ "NAMECN":"颍州"
+ },
+ "颍东":{
+ "AREAID":"101220808",
+ "NAMECN":"颍东"
+ },
+ "颍泉":{
+ "AREAID":"101220809",
+ "NAMECN":"颍泉"
+ }
+ },
+ "亳州":{
+ "亳州":{
+ "AREAID":"101220901",
+ "NAMECN":"亳州"
+ },
+ "涡阳":{
+ "AREAID":"101220902",
+ "NAMECN":"涡阳"
+ },
+ "利辛":{
+ "AREAID":"101220903",
+ "NAMECN":"利辛"
+ },
+ "蒙城":{
+ "AREAID":"101220904",
+ "NAMECN":"蒙城"
+ },
+ "谯城":{
+ "AREAID":"101220905",
+ "NAMECN":"谯城"
+ }
+ },
+ "黄山":{
+ "黄山":{
+ "AREAID":"101221001",
+ "NAMECN":"黄山"
+ },
+ "黄山区":{
+ "AREAID":"101221002",
+ "NAMECN":"黄山区"
+ },
+ "屯溪":{
+ "AREAID":"101221003",
+ "NAMECN":"屯溪"
+ },
+ "祁门":{
+ "AREAID":"101221004",
+ "NAMECN":"祁门"
+ },
+ "黟县":{
+ "AREAID":"101221005",
+ "NAMECN":"黟县"
+ },
+ "歙县":{
+ "AREAID":"101221006",
+ "NAMECN":"歙县"
+ },
+ "休宁":{
+ "AREAID":"101221007",
+ "NAMECN":"休宁"
+ },
+ "黄山风景区(光明顶)":{
+ "AREAID":"101221008",
+ "NAMECN":"黄山风景区(光明顶)"
+ },
+ "徽州":{
+ "AREAID":"101221009",
+ "NAMECN":"徽州"
+ }
+ },
+ "滁州":{
+ "滁州":{
+ "AREAID":"101221101",
+ "NAMECN":"滁州"
+ },
+ "凤阳":{
+ "AREAID":"101221102",
+ "NAMECN":"凤阳"
+ },
+ "明光":{
+ "AREAID":"101221103",
+ "NAMECN":"明光"
+ },
+ "定远":{
+ "AREAID":"101221104",
+ "NAMECN":"定远"
+ },
+ "全椒":{
+ "AREAID":"101221105",
+ "NAMECN":"全椒"
+ },
+ "来安":{
+ "AREAID":"101221106",
+ "NAMECN":"来安"
+ },
+ "天长":{
+ "AREAID":"101221107",
+ "NAMECN":"天长"
+ },
+ "琅琊":{
+ "AREAID":"101221108",
+ "NAMECN":"琅琊"
+ },
+ "南谯":{
+ "AREAID":"101221109",
+ "NAMECN":"南谯"
+ }
+ },
+ "淮北":{
+ "淮北":{
+ "AREAID":"101221201",
+ "NAMECN":"淮北"
+ },
+ "濉溪":{
+ "AREAID":"101221202",
+ "NAMECN":"濉溪"
+ },
+ "杜集":{
+ "AREAID":"101221203",
+ "NAMECN":"杜集"
+ },
+ "相山":{
+ "AREAID":"101221204",
+ "NAMECN":"相山"
+ },
+ "烈山":{
+ "AREAID":"101221205",
+ "NAMECN":"烈山"
+ }
+ },
+ "铜陵":{
+ "铜陵":{
+ "AREAID":"101221301",
+ "NAMECN":"铜陵"
+ },
+ "铜官":{
+ "AREAID":"101221302",
+ "NAMECN":"铜官"
+ },
+ "义安":{
+ "AREAID":"101221303",
+ "NAMECN":"义安"
+ },
+ "郊区":{
+ "AREAID":"101221304",
+ "NAMECN":"郊区"
+ },
+ "枞阳":{
+ "AREAID":"101221305",
+ "NAMECN":"枞阳"
+ }
+ },
+ "宣城":{
+ "宣城":{
+ "AREAID":"101221401",
+ "NAMECN":"宣城"
+ },
+ "泾县":{
+ "AREAID":"101221402",
+ "NAMECN":"泾县"
+ },
+ "旌德":{
+ "AREAID":"101221403",
+ "NAMECN":"旌德"
+ },
+ "宁国":{
+ "AREAID":"101221404",
+ "NAMECN":"宁国"
+ },
+ "绩溪":{
+ "AREAID":"101221405",
+ "NAMECN":"绩溪"
+ },
+ "广德":{
+ "AREAID":"101221406",
+ "NAMECN":"广德"
+ },
+ "郎溪":{
+ "AREAID":"101221407",
+ "NAMECN":"郎溪"
+ },
+ "宣州":{
+ "AREAID":"101221408",
+ "NAMECN":"宣州"
+ }
+ },
+ "六安":{
+ "六安":{
+ "AREAID":"101221501",
+ "NAMECN":"六安"
+ },
+ "霍邱":{
+ "AREAID":"101221502",
+ "NAMECN":"霍邱"
+ },
+ "金安":{
+ "AREAID":"101221504",
+ "NAMECN":"金安"
+ },
+ "金寨":{
+ "AREAID":"101221505",
+ "NAMECN":"金寨"
+ },
+ "霍山":{
+ "AREAID":"101221506",
+ "NAMECN":"霍山"
+ },
+ "舒城":{
+ "AREAID":"101221507",
+ "NAMECN":"舒城"
+ },
+ "裕安":{
+ "AREAID":"101221508",
+ "NAMECN":"裕安"
+ },
+ "叶集":{
+ "AREAID":"101221509",
+ "NAMECN":"叶集"
+ }
+ },
+ "池州":{
+ "池州":{
+ "AREAID":"101221701",
+ "NAMECN":"池州"
+ },
+ "东至":{
+ "AREAID":"101221702",
+ "NAMECN":"东至"
+ },
+ "青阳":{
+ "AREAID":"101221703",
+ "NAMECN":"青阳"
+ },
+ "九华山":{
+ "AREAID":"101221704",
+ "NAMECN":"九华山"
+ },
+ "石台":{
+ "AREAID":"101221705",
+ "NAMECN":"石台"
+ },
+ "贵池":{
+ "AREAID":"101221706",
+ "NAMECN":"贵池"
+ }
+ }
+ },
+ "福建":{
+ "福州":{
+ "福州":{
+ "AREAID":"101230101",
+ "NAMECN":"福州"
+ },
+ "闽清":{
+ "AREAID":"101230102",
+ "NAMECN":"闽清"
+ },
+ "闽侯":{
+ "AREAID":"101230103",
+ "NAMECN":"闽侯"
+ },
+ "罗源":{
+ "AREAID":"101230104",
+ "NAMECN":"罗源"
+ },
+ "连江":{
+ "AREAID":"101230105",
+ "NAMECN":"连江"
+ },
+ "鼓楼":{
+ "AREAID":"101230106",
+ "NAMECN":"鼓楼"
+ },
+ "永泰":{
+ "AREAID":"101230107",
+ "NAMECN":"永泰"
+ },
+ "平潭":{
+ "AREAID":"101230108",
+ "NAMECN":"平潭"
+ },
+ "台江":{
+ "AREAID":"101230109",
+ "NAMECN":"台江"
+ },
+ "长乐":{
+ "AREAID":"101230110",
+ "NAMECN":"长乐"
+ },
+ "福清":{
+ "AREAID":"101230111",
+ "NAMECN":"福清"
+ },
+ "仓山":{
+ "AREAID":"101230112",
+ "NAMECN":"仓山"
+ },
+ "马尾":{
+ "AREAID":"101230113",
+ "NAMECN":"马尾"
+ },
+ "晋安":{
+ "AREAID":"101230114",
+ "NAMECN":"晋安"
+ }
+ },
+ "厦门":{
+ "厦门":{
+ "AREAID":"101230201",
+ "NAMECN":"厦门"
+ },
+ "同安":{
+ "AREAID":"101230202",
+ "NAMECN":"同安"
+ },
+ "思明":{
+ "AREAID":"101230203",
+ "NAMECN":"思明"
+ },
+ "海沧":{
+ "AREAID":"101230204",
+ "NAMECN":"海沧"
+ },
+ "湖里":{
+ "AREAID":"101230205",
+ "NAMECN":"湖里"
+ },
+ "集美":{
+ "AREAID":"101230206",
+ "NAMECN":"集美"
+ },
+ "翔安":{
+ "AREAID":"101230207",
+ "NAMECN":"翔安"
+ }
+ },
+ "宁德":{
+ "宁德":{
+ "AREAID":"101230301",
+ "NAMECN":"宁德"
+ },
+ "古田":{
+ "AREAID":"101230302",
+ "NAMECN":"古田"
+ },
+ "霞浦":{
+ "AREAID":"101230303",
+ "NAMECN":"霞浦"
+ },
+ "寿宁":{
+ "AREAID":"101230304",
+ "NAMECN":"寿宁"
+ },
+ "周宁":{
+ "AREAID":"101230305",
+ "NAMECN":"周宁"
+ },
+ "福安":{
+ "AREAID":"101230306",
+ "NAMECN":"福安"
+ },
+ "柘荣":{
+ "AREAID":"101230307",
+ "NAMECN":"柘荣"
+ },
+ "福鼎":{
+ "AREAID":"101230308",
+ "NAMECN":"福鼎"
+ },
+ "屏南":{
+ "AREAID":"101230309",
+ "NAMECN":"屏南"
+ },
+ "蕉城":{
+ "AREAID":"101230310",
+ "NAMECN":"蕉城"
+ }
+ },
+ "莆田":{
+ "莆田":{
+ "AREAID":"101230401",
+ "NAMECN":"莆田"
+ },
+ "仙游":{
+ "AREAID":"101230402",
+ "NAMECN":"仙游"
+ },
+ "涵江":{
+ "AREAID":"101230404",
+ "NAMECN":"涵江"
+ },
+ "秀屿":{
+ "AREAID":"101230405",
+ "NAMECN":"秀屿"
+ },
+ "荔城":{
+ "AREAID":"101230406",
+ "NAMECN":"荔城"
+ },
+ "城厢":{
+ "AREAID":"101230407",
+ "NAMECN":"城厢"
+ }
+ },
+ "泉州":{
+ "泉州":{
+ "AREAID":"101230501",
+ "NAMECN":"泉州"
+ },
+ "安溪":{
+ "AREAID":"101230502",
+ "NAMECN":"安溪"
+ },
+ "金门":{
+ "AREAID":"101230503",
+ "NAMECN":"金门"
+ },
+ "永春":{
+ "AREAID":"101230504",
+ "NAMECN":"永春"
+ },
+ "德化":{
+ "AREAID":"101230505",
+ "NAMECN":"德化"
+ },
+ "南安":{
+ "AREAID":"101230506",
+ "NAMECN":"南安"
+ },
+ "崇武":{
+ "AREAID":"101230507",
+ "NAMECN":"崇武"
+ },
+ "惠安":{
+ "AREAID":"101230508",
+ "NAMECN":"惠安"
+ },
+ "晋江":{
+ "AREAID":"101230509",
+ "NAMECN":"晋江"
+ },
+ "石狮":{
+ "AREAID":"101230510",
+ "NAMECN":"石狮"
+ },
+ "鲤城":{
+ "AREAID":"101230511",
+ "NAMECN":"鲤城"
+ },
+ "丰泽":{
+ "AREAID":"101230512",
+ "NAMECN":"丰泽"
+ },
+ "洛江":{
+ "AREAID":"101230513",
+ "NAMECN":"洛江"
+ },
+ "泉港":{
+ "AREAID":"101230514",
+ "NAMECN":"泉港"
+ }
+ },
+ "漳州":{
+ "漳州":{
+ "AREAID":"101230601",
+ "NAMECN":"漳州"
+ },
+ "长泰":{
+ "AREAID":"101230602",
+ "NAMECN":"长泰"
+ },
+ "南靖":{
+ "AREAID":"101230603",
+ "NAMECN":"南靖"
+ },
+ "平和":{
+ "AREAID":"101230604",
+ "NAMECN":"平和"
+ },
+ "龙海":{
+ "AREAID":"101230605",
+ "NAMECN":"龙海"
+ },
+ "漳浦":{
+ "AREAID":"101230606",
+ "NAMECN":"漳浦"
+ },
+ "诏安":{
+ "AREAID":"101230607",
+ "NAMECN":"诏安"
+ },
+ "东山":{
+ "AREAID":"101230608",
+ "NAMECN":"东山"
+ },
+ "云霄":{
+ "AREAID":"101230609",
+ "NAMECN":"云霄"
+ },
+ "华安":{
+ "AREAID":"101230610",
+ "NAMECN":"华安"
+ },
+ "芗城":{
+ "AREAID":"101230611",
+ "NAMECN":"芗城"
+ },
+ "龙文":{
+ "AREAID":"101230612",
+ "NAMECN":"龙文"
+ }
+ },
+ "龙岩":{
+ "龙岩":{
+ "AREAID":"101230701",
+ "NAMECN":"龙岩"
+ },
+ "长汀":{
+ "AREAID":"101230702",
+ "NAMECN":"长汀"
+ },
+ "连城":{
+ "AREAID":"101230703",
+ "NAMECN":"连城"
+ },
+ "武平":{
+ "AREAID":"101230704",
+ "NAMECN":"武平"
+ },
+ "上杭":{
+ "AREAID":"101230705",
+ "NAMECN":"上杭"
+ },
+ "永定":{
+ "AREAID":"101230706",
+ "NAMECN":"永定"
+ },
+ "漳平":{
+ "AREAID":"101230707",
+ "NAMECN":"漳平"
+ },
+ "新罗":{
+ "AREAID":"101230708",
+ "NAMECN":"新罗"
+ }
+ },
+ "三明":{
+ "三明":{
+ "AREAID":"101230801",
+ "NAMECN":"三明"
+ },
+ "宁化":{
+ "AREAID":"101230802",
+ "NAMECN":"宁化"
+ },
+ "清流":{
+ "AREAID":"101230803",
+ "NAMECN":"清流"
+ },
+ "泰宁":{
+ "AREAID":"101230804",
+ "NAMECN":"泰宁"
+ },
+ "将乐":{
+ "AREAID":"101230805",
+ "NAMECN":"将乐"
+ },
+ "建宁":{
+ "AREAID":"101230806",
+ "NAMECN":"建宁"
+ },
+ "明溪":{
+ "AREAID":"101230807",
+ "NAMECN":"明溪"
+ },
+ "沙县":{
+ "AREAID":"101230808",
+ "NAMECN":"沙县"
+ },
+ "尤溪":{
+ "AREAID":"101230809",
+ "NAMECN":"尤溪"
+ },
+ "永安":{
+ "AREAID":"101230810",
+ "NAMECN":"永安"
+ },
+ "大田":{
+ "AREAID":"101230811",
+ "NAMECN":"大田"
+ },
+ "梅列":{
+ "AREAID":"101230812",
+ "NAMECN":"梅列"
+ },
+ "三元":{
+ "AREAID":"101230813",
+ "NAMECN":"三元"
+ }
+ },
+ "南平":{
+ "南平":{
+ "AREAID":"101230901",
+ "NAMECN":"南平"
+ },
+ "顺昌":{
+ "AREAID":"101230902",
+ "NAMECN":"顺昌"
+ },
+ "光泽":{
+ "AREAID":"101230903",
+ "NAMECN":"光泽"
+ },
+ "邵武":{
+ "AREAID":"101230904",
+ "NAMECN":"邵武"
+ },
+ "武夷山":{
+ "AREAID":"101230905",
+ "NAMECN":"武夷山"
+ },
+ "浦城":{
+ "AREAID":"101230906",
+ "NAMECN":"浦城"
+ },
+ "建阳":{
+ "AREAID":"101230907",
+ "NAMECN":"建阳"
+ },
+ "松溪":{
+ "AREAID":"101230908",
+ "NAMECN":"松溪"
+ },
+ "政和":{
+ "AREAID":"101230909",
+ "NAMECN":"政和"
+ },
+ "建瓯":{
+ "AREAID":"101230910",
+ "NAMECN":"建瓯"
+ },
+ "延平":{
+ "AREAID":"101230911",
+ "NAMECN":"延平"
+ }
+ },
+ "钓鱼岛":{
+ "钓鱼岛":{
+ "AREAID":"101231001",
+ "NAMECN":"钓鱼岛"
+ }
+ }
+ },
+ "江西":{
+ "南昌":{
+ "南昌":{
+ "AREAID":"101240101",
+ "NAMECN":"南昌"
+ },
+ "新建":{
+ "AREAID":"101240102",
+ "NAMECN":"新建"
+ },
+ "南昌县":{
+ "AREAID":"101240103",
+ "NAMECN":"南昌县"
+ },
+ "安义":{
+ "AREAID":"101240104",
+ "NAMECN":"安义"
+ },
+ "进贤":{
+ "AREAID":"101240105",
+ "NAMECN":"进贤"
+ },
+ "东湖":{
+ "AREAID":"101240106",
+ "NAMECN":"东湖"
+ },
+ "西湖":{
+ "AREAID":"101240107",
+ "NAMECN":"西湖"
+ },
+ "青云谱":{
+ "AREAID":"101240108",
+ "NAMECN":"青云谱"
+ },
+ "湾里":{
+ "AREAID":"101240109",
+ "NAMECN":"湾里"
+ },
+ "青山湖":{
+ "AREAID":"101240110",
+ "NAMECN":"青山湖"
+ }
+ },
+ "九江":{
+ "九江":{
+ "AREAID":"101240201",
+ "NAMECN":"九江"
+ },
+ "瑞昌":{
+ "AREAID":"101240202",
+ "NAMECN":"瑞昌"
+ },
+ "庐山":{
+ "AREAID":"101240203",
+ "NAMECN":"庐山"
+ },
+ "武宁":{
+ "AREAID":"101240204",
+ "NAMECN":"武宁"
+ },
+ "德安":{
+ "AREAID":"101240205",
+ "NAMECN":"德安"
+ },
+ "永修":{
+ "AREAID":"101240206",
+ "NAMECN":"永修"
+ },
+ "湖口":{
+ "AREAID":"101240207",
+ "NAMECN":"湖口"
+ },
+ "彭泽":{
+ "AREAID":"101240208",
+ "NAMECN":"彭泽"
+ },
+ "都昌":{
+ "AREAID":"101240210",
+ "NAMECN":"都昌"
+ },
+ "浔阳":{
+ "AREAID":"101240211",
+ "NAMECN":"浔阳"
+ },
+ "修水":{
+ "AREAID":"101240212",
+ "NAMECN":"修水"
+ },
+ "共青城":{
+ "AREAID":"101240213",
+ "NAMECN":"共青城"
+ },
+ "濂溪":{
+ "AREAID":"101240214",
+ "NAMECN":"濂溪"
+ },
+ "柴桑":{
+ "AREAID":"101240215",
+ "NAMECN":"柴桑"
+ }
+ },
+ "上饶":{
+ "上饶":{
+ "AREAID":"101240301",
+ "NAMECN":"上饶"
+ },
+ "鄱阳":{
+ "AREAID":"101240302",
+ "NAMECN":"鄱阳"
+ },
+ "婺源":{
+ "AREAID":"101240303",
+ "NAMECN":"婺源"
+ },
+ "信州":{
+ "AREAID":"101240304",
+ "NAMECN":"信州"
+ },
+ "余干":{
+ "AREAID":"101240305",
+ "NAMECN":"余干"
+ },
+ "万年":{
+ "AREAID":"101240306",
+ "NAMECN":"万年"
+ },
+ "德兴":{
+ "AREAID":"101240307",
+ "NAMECN":"德兴"
+ },
+ "上饶县":{
+ "AREAID":"101240308",
+ "NAMECN":"上饶县"
+ },
+ "弋阳":{
+ "AREAID":"101240309",
+ "NAMECN":"弋阳"
+ },
+ "横峰":{
+ "AREAID":"101240310",
+ "NAMECN":"横峰"
+ },
+ "铅山":{
+ "AREAID":"101240311",
+ "NAMECN":"铅山"
+ },
+ "玉山":{
+ "AREAID":"101240312",
+ "NAMECN":"玉山"
+ },
+ "广丰":{
+ "AREAID":"101240313",
+ "NAMECN":"广丰"
+ }
+ },
+ "抚州":{
+ "抚州":{
+ "AREAID":"101240401",
+ "NAMECN":"抚州"
+ },
+ "广昌":{
+ "AREAID":"101240402",
+ "NAMECN":"广昌"
+ },
+ "乐安":{
+ "AREAID":"101240403",
+ "NAMECN":"乐安"
+ },
+ "崇仁":{
+ "AREAID":"101240404",
+ "NAMECN":"崇仁"
+ },
+ "金溪":{
+ "AREAID":"101240405",
+ "NAMECN":"金溪"
+ },
+ "资溪":{
+ "AREAID":"101240406",
+ "NAMECN":"资溪"
+ },
+ "宜黄":{
+ "AREAID":"101240407",
+ "NAMECN":"宜黄"
+ },
+ "南城":{
+ "AREAID":"101240408",
+ "NAMECN":"南城"
+ },
+ "南丰":{
+ "AREAID":"101240409",
+ "NAMECN":"南丰"
+ },
+ "黎川":{
+ "AREAID":"101240410",
+ "NAMECN":"黎川"
+ },
+ "东乡":{
+ "AREAID":"101240411",
+ "NAMECN":"东乡"
+ },
+ "临川":{
+ "AREAID":"101240412",
+ "NAMECN":"临川"
+ }
+ },
+ "宜春":{
+ "宜春":{
+ "AREAID":"101240501",
+ "NAMECN":"宜春"
+ },
+ "铜鼓":{
+ "AREAID":"101240502",
+ "NAMECN":"铜鼓"
+ },
+ "宜丰":{
+ "AREAID":"101240503",
+ "NAMECN":"宜丰"
+ },
+ "万载":{
+ "AREAID":"101240504",
+ "NAMECN":"万载"
+ },
+ "上高":{
+ "AREAID":"101240505",
+ "NAMECN":"上高"
+ },
+ "靖安":{
+ "AREAID":"101240506",
+ "NAMECN":"靖安"
+ },
+ "奉新":{
+ "AREAID":"101240507",
+ "NAMECN":"奉新"
+ },
+ "高安":{
+ "AREAID":"101240508",
+ "NAMECN":"高安"
+ },
+ "樟树":{
+ "AREAID":"101240509",
+ "NAMECN":"樟树"
+ },
+ "丰城":{
+ "AREAID":"101240510",
+ "NAMECN":"丰城"
+ },
+ "袁州":{
+ "AREAID":"101240511",
+ "NAMECN":"袁州"
+ }
+ },
+ "吉安":{
+ "吉安":{
+ "AREAID":"101240601",
+ "NAMECN":"吉安"
+ },
+ "吉安县":{
+ "AREAID":"101240602",
+ "NAMECN":"吉安县"
+ },
+ "吉水":{
+ "AREAID":"101240603",
+ "NAMECN":"吉水"
+ },
+ "新干":{
+ "AREAID":"101240604",
+ "NAMECN":"新干"
+ },
+ "峡江":{
+ "AREAID":"101240605",
+ "NAMECN":"峡江"
+ },
+ "永丰":{
+ "AREAID":"101240606",
+ "NAMECN":"永丰"
+ },
+ "永新":{
+ "AREAID":"101240607",
+ "NAMECN":"永新"
+ },
+ "井冈山":{
+ "AREAID":"101240608",
+ "NAMECN":"井冈山"
+ },
+ "万安":{
+ "AREAID":"101240609",
+ "NAMECN":"万安"
+ },
+ "遂川":{
+ "AREAID":"101240610",
+ "NAMECN":"遂川"
+ },
+ "泰和":{
+ "AREAID":"101240611",
+ "NAMECN":"泰和"
+ },
+ "安福":{
+ "AREAID":"101240612",
+ "NAMECN":"安福"
+ },
+ "吉州":{
+ "AREAID":"101240614",
+ "NAMECN":"吉州"
+ },
+ "青原":{
+ "AREAID":"101240615",
+ "NAMECN":"青原"
+ },
+ "厦坪":{
+ "AREAID":"101240616",
+ "NAMECN":"厦坪"
+ }
+ },
+ "赣州":{
+ "赣州":{
+ "AREAID":"101240701",
+ "NAMECN":"赣州"
+ },
+ "崇义":{
+ "AREAID":"101240702",
+ "NAMECN":"崇义"
+ },
+ "上犹":{
+ "AREAID":"101240703",
+ "NAMECN":"上犹"
+ },
+ "南康":{
+ "AREAID":"101240704",
+ "NAMECN":"南康"
+ },
+ "大余":{
+ "AREAID":"101240705",
+ "NAMECN":"大余"
+ },
+ "信丰":{
+ "AREAID":"101240706",
+ "NAMECN":"信丰"
+ },
+ "宁都":{
+ "AREAID":"101240707",
+ "NAMECN":"宁都"
+ },
+ "石城":{
+ "AREAID":"101240708",
+ "NAMECN":"石城"
+ },
+ "瑞金":{
+ "AREAID":"101240709",
+ "NAMECN":"瑞金"
+ },
+ "于都":{
+ "AREAID":"101240710",
+ "NAMECN":"于都"
+ },
+ "会昌":{
+ "AREAID":"101240711",
+ "NAMECN":"会昌"
+ },
+ "安远":{
+ "AREAID":"101240712",
+ "NAMECN":"安远"
+ },
+ "全南":{
+ "AREAID":"101240713",
+ "NAMECN":"全南"
+ },
+ "龙南":{
+ "AREAID":"101240714",
+ "NAMECN":"龙南"
+ },
+ "定南":{
+ "AREAID":"101240715",
+ "NAMECN":"定南"
+ },
+ "寻乌":{
+ "AREAID":"101240716",
+ "NAMECN":"寻乌"
+ },
+ "兴国":{
+ "AREAID":"101240717",
+ "NAMECN":"兴国"
+ },
+ "赣县":{
+ "AREAID":"101240718",
+ "NAMECN":"赣县"
+ },
+ "章贡":{
+ "AREAID":"101240719",
+ "NAMECN":"章贡"
+ }
+ },
+ "景德镇":{
+ "景德镇":{
+ "AREAID":"101240801",
+ "NAMECN":"景德镇"
+ },
+ "乐平":{
+ "AREAID":"101240802",
+ "NAMECN":"乐平"
+ },
+ "浮梁":{
+ "AREAID":"101240803",
+ "NAMECN":"浮梁"
+ },
+ "昌江":{
+ "AREAID":"101240804",
+ "NAMECN":"昌江"
+ },
+ "珠山":{
+ "AREAID":"101240805",
+ "NAMECN":"珠山"
+ }
+ },
+ "萍乡":{
+ "萍乡":{
+ "AREAID":"101240901",
+ "NAMECN":"萍乡"
+ },
+ "莲花":{
+ "AREAID":"101240902",
+ "NAMECN":"莲花"
+ },
+ "上栗":{
+ "AREAID":"101240903",
+ "NAMECN":"上栗"
+ },
+ "安源":{
+ "AREAID":"101240904",
+ "NAMECN":"安源"
+ },
+ "芦溪":{
+ "AREAID":"101240905",
+ "NAMECN":"芦溪"
+ },
+ "湘东":{
+ "AREAID":"101240906",
+ "NAMECN":"湘东"
+ }
+ },
+ "新余":{
+ "新余":{
+ "AREAID":"101241001",
+ "NAMECN":"新余"
+ },
+ "分宜":{
+ "AREAID":"101241002",
+ "NAMECN":"分宜"
+ },
+ "渝水":{
+ "AREAID":"101241003",
+ "NAMECN":"渝水"
+ }
+ },
+ "鹰潭":{
+ "鹰潭":{
+ "AREAID":"101241101",
+ "NAMECN":"鹰潭"
+ },
+ "余江":{
+ "AREAID":"101241102",
+ "NAMECN":"余江"
+ },
+ "贵溪":{
+ "AREAID":"101241103",
+ "NAMECN":"贵溪"
+ },
+ "月湖":{
+ "AREAID":"101241104",
+ "NAMECN":"月湖"
+ }
+ }
+ },
+ "湖南":{
+ "长沙":{
+ "长沙":{
+ "AREAID":"101250101",
+ "NAMECN":"长沙"
+ },
+ "宁乡":{
+ "AREAID":"101250102",
+ "NAMECN":"宁乡"
+ },
+ "浏阳":{
+ "AREAID":"101250103",
+ "NAMECN":"浏阳"
+ },
+ "湘江新区":{
+ "AREAID":"101250104",
+ "NAMECN":"湘江新区"
+ },
+ "望城":{
+ "AREAID":"101250105",
+ "NAMECN":"望城"
+ },
+ "长沙县":{
+ "AREAID":"101250106",
+ "NAMECN":"长沙县"
+ },
+ "芙蓉":{
+ "AREAID":"101250107",
+ "NAMECN":"芙蓉"
+ },
+ "天心":{
+ "AREAID":"101250108",
+ "NAMECN":"天心"
+ },
+ "岳麓":{
+ "AREAID":"101250109",
+ "NAMECN":"岳麓"
+ },
+ "开福":{
+ "AREAID":"101250110",
+ "NAMECN":"开福"
+ },
+ "雨花":{
+ "AREAID":"101250111",
+ "NAMECN":"雨花"
+ }
+ },
+ "湘潭":{
+ "湘潭":{
+ "AREAID":"101250201",
+ "NAMECN":"湘潭"
+ },
+ "韶山":{
+ "AREAID":"101250202",
+ "NAMECN":"韶山"
+ },
+ "湘乡":{
+ "AREAID":"101250203",
+ "NAMECN":"湘乡"
+ },
+ "雨湖":{
+ "AREAID":"101250204",
+ "NAMECN":"雨湖"
+ },
+ "岳塘":{
+ "AREAID":"101250205",
+ "NAMECN":"岳塘"
+ }
+ },
+ "株洲":{
+ "株洲":{
+ "AREAID":"101250301",
+ "NAMECN":"株洲"
+ },
+ "攸县":{
+ "AREAID":"101250302",
+ "NAMECN":"攸县"
+ },
+ "醴陵":{
+ "AREAID":"101250303",
+ "NAMECN":"醴陵"
+ },
+ "荷塘":{
+ "AREAID":"101250304",
+ "NAMECN":"荷塘"
+ },
+ "茶陵":{
+ "AREAID":"101250305",
+ "NAMECN":"茶陵"
+ },
+ "炎陵":{
+ "AREAID":"101250306",
+ "NAMECN":"炎陵"
+ },
+ "芦淞":{
+ "AREAID":"101250307",
+ "NAMECN":"芦淞"
+ },
+ "石峰":{
+ "AREAID":"101250308",
+ "NAMECN":"石峰"
+ },
+ "天元":{
+ "AREAID":"101250309",
+ "NAMECN":"天元"
+ }
+ },
+ "衡阳":{
+ "衡阳":{
+ "AREAID":"101250401",
+ "NAMECN":"衡阳"
+ },
+ "衡山":{
+ "AREAID":"101250402",
+ "NAMECN":"衡山"
+ },
+ "衡东":{
+ "AREAID":"101250403",
+ "NAMECN":"衡东"
+ },
+ "祁东":{
+ "AREAID":"101250404",
+ "NAMECN":"祁东"
+ },
+ "衡阳县":{
+ "AREAID":"101250405",
+ "NAMECN":"衡阳县"
+ },
+ "常宁":{
+ "AREAID":"101250406",
+ "NAMECN":"常宁"
+ },
+ "衡南":{
+ "AREAID":"101250407",
+ "NAMECN":"衡南"
+ },
+ "耒阳":{
+ "AREAID":"101250408",
+ "NAMECN":"耒阳"
+ },
+ "南岳":{
+ "AREAID":"101250409",
+ "NAMECN":"南岳"
+ },
+ "珠晖":{
+ "AREAID":"101250410",
+ "NAMECN":"珠晖"
+ },
+ "雁峰":{
+ "AREAID":"101250411",
+ "NAMECN":"雁峰"
+ },
+ "石鼓":{
+ "AREAID":"101250412",
+ "NAMECN":"石鼓"
+ },
+ "蒸湘":{
+ "AREAID":"101250413",
+ "NAMECN":"蒸湘"
+ }
+ },
+ "郴州":{
+ "郴州":{
+ "AREAID":"101250501",
+ "NAMECN":"郴州"
+ },
+ "桂阳":{
+ "AREAID":"101250502",
+ "NAMECN":"桂阳"
+ },
+ "嘉禾":{
+ "AREAID":"101250503",
+ "NAMECN":"嘉禾"
+ },
+ "宜章":{
+ "AREAID":"101250504",
+ "NAMECN":"宜章"
+ },
+ "临武":{
+ "AREAID":"101250505",
+ "NAMECN":"临武"
+ },
+ "北湖":{
+ "AREAID":"101250506",
+ "NAMECN":"北湖"
+ },
+ "资兴":{
+ "AREAID":"101250507",
+ "NAMECN":"资兴"
+ },
+ "汝城":{
+ "AREAID":"101250508",
+ "NAMECN":"汝城"
+ },
+ "安仁":{
+ "AREAID":"101250509",
+ "NAMECN":"安仁"
+ },
+ "永兴":{
+ "AREAID":"101250510",
+ "NAMECN":"永兴"
+ },
+ "桂东":{
+ "AREAID":"101250511",
+ "NAMECN":"桂东"
+ },
+ "苏仙":{
+ "AREAID":"101250512",
+ "NAMECN":"苏仙"
+ }
+ },
+ "常德":{
+ "常德":{
+ "AREAID":"101250601",
+ "NAMECN":"常德"
+ },
+ "安乡":{
+ "AREAID":"101250602",
+ "NAMECN":"安乡"
+ },
+ "桃源":{
+ "AREAID":"101250603",
+ "NAMECN":"桃源"
+ },
+ "汉寿":{
+ "AREAID":"101250604",
+ "NAMECN":"汉寿"
+ },
+ "澧县":{
+ "AREAID":"101250605",
+ "NAMECN":"澧县"
+ },
+ "临澧":{
+ "AREAID":"101250606",
+ "NAMECN":"临澧"
+ },
+ "石门":{
+ "AREAID":"101250607",
+ "NAMECN":"石门"
+ },
+ "津市":{
+ "AREAID":"101250608",
+ "NAMECN":"津市"
+ },
+ "武陵":{
+ "AREAID":"101250609",
+ "NAMECN":"武陵"
+ },
+ "鼎城":{
+ "AREAID":"101250610",
+ "NAMECN":"鼎城"
+ }
+ },
+ "益阳":{
+ "益阳":{
+ "AREAID":"101250700",
+ "NAMECN":"益阳"
+ },
+ "赫山区":{
+ "AREAID":"101250701",
+ "NAMECN":"赫山区"
+ },
+ "南县":{
+ "AREAID":"101250702",
+ "NAMECN":"南县"
+ },
+ "桃江":{
+ "AREAID":"101250703",
+ "NAMECN":"桃江"
+ },
+ "安化":{
+ "AREAID":"101250704",
+ "NAMECN":"安化"
+ },
+ "沅江":{
+ "AREAID":"101250705",
+ "NAMECN":"沅江"
+ },
+ "资阳":{
+ "AREAID":"101250706",
+ "NAMECN":"资阳"
+ }
+ },
+ "娄底":{
+ "娄底":{
+ "AREAID":"101250801",
+ "NAMECN":"娄底"
+ },
+ "双峰":{
+ "AREAID":"101250802",
+ "NAMECN":"双峰"
+ },
+ "冷水江":{
+ "AREAID":"101250803",
+ "NAMECN":"冷水江"
+ },
+ "娄星":{
+ "AREAID":"101250804",
+ "NAMECN":"娄星"
+ },
+ "新化":{
+ "AREAID":"101250805",
+ "NAMECN":"新化"
+ },
+ "涟源":{
+ "AREAID":"101250806",
+ "NAMECN":"涟源"
+ }
+ },
+ "邵阳":{
+ "邵阳":{
+ "AREAID":"101250901",
+ "NAMECN":"邵阳"
+ },
+ "隆回":{
+ "AREAID":"101250902",
+ "NAMECN":"隆回"
+ },
+ "洞口":{
+ "AREAID":"101250903",
+ "NAMECN":"洞口"
+ },
+ "新邵":{
+ "AREAID":"101250904",
+ "NAMECN":"新邵"
+ },
+ "邵东":{
+ "AREAID":"101250905",
+ "NAMECN":"邵东"
+ },
+ "绥宁":{
+ "AREAID":"101250906",
+ "NAMECN":"绥宁"
+ },
+ "新宁":{
+ "AREAID":"101250907",
+ "NAMECN":"新宁"
+ },
+ "武冈":{
+ "AREAID":"101250908",
+ "NAMECN":"武冈"
+ },
+ "城步":{
+ "AREAID":"101250909",
+ "NAMECN":"城步"
+ },
+ "邵阳县":{
+ "AREAID":"101250910",
+ "NAMECN":"邵阳县"
+ },
+ "双清":{
+ "AREAID":"101250911",
+ "NAMECN":"双清"
+ },
+ "大祥":{
+ "AREAID":"101250912",
+ "NAMECN":"大祥"
+ },
+ "北塔":{
+ "AREAID":"101250913",
+ "NAMECN":"北塔"
+ }
+ },
+ "岳阳":{
+ "岳阳":{
+ "AREAID":"101251001",
+ "NAMECN":"岳阳"
+ },
+ "华容":{
+ "AREAID":"101251002",
+ "NAMECN":"华容"
+ },
+ "湘阴":{
+ "AREAID":"101251003",
+ "NAMECN":"湘阴"
+ },
+ "汨罗":{
+ "AREAID":"101251004",
+ "NAMECN":"汨罗"
+ },
+ "平江":{
+ "AREAID":"101251005",
+ "NAMECN":"平江"
+ },
+ "临湘":{
+ "AREAID":"101251006",
+ "NAMECN":"临湘"
+ },
+ "岳阳楼区":{
+ "AREAID":"101251007",
+ "NAMECN":"岳阳楼区"
+ },
+ "云溪":{
+ "AREAID":"101251008",
+ "NAMECN":"云溪"
+ },
+ "君山":{
+ "AREAID":"101251009",
+ "NAMECN":"君山"
+ }
+ },
+ "张家界":{
+ "张家界":{
+ "AREAID":"101251101",
+ "NAMECN":"张家界"
+ },
+ "桑植":{
+ "AREAID":"101251102",
+ "NAMECN":"桑植"
+ },
+ "慈利":{
+ "AREAID":"101251103",
+ "NAMECN":"慈利"
+ },
+ "武陵源":{
+ "AREAID":"101251104",
+ "NAMECN":"武陵源"
+ },
+ "永定":{
+ "AREAID":"101251105",
+ "NAMECN":"永定"
+ }
+ },
+ "怀化":{
+ "怀化":{
+ "AREAID":"101251201",
+ "NAMECN":"怀化"
+ },
+ "鹤城":{
+ "AREAID":"101251202",
+ "NAMECN":"鹤城"
+ },
+ "沅陵":{
+ "AREAID":"101251203",
+ "NAMECN":"沅陵"
+ },
+ "辰溪":{
+ "AREAID":"101251204",
+ "NAMECN":"辰溪"
+ },
+ "靖州":{
+ "AREAID":"101251205",
+ "NAMECN":"靖州"
+ },
+ "会同":{
+ "AREAID":"101251206",
+ "NAMECN":"会同"
+ },
+ "通道":{
+ "AREAID":"101251207",
+ "NAMECN":"通道"
+ },
+ "麻阳":{
+ "AREAID":"101251208",
+ "NAMECN":"麻阳"
+ },
+ "新晃":{
+ "AREAID":"101251209",
+ "NAMECN":"新晃"
+ },
+ "芷江":{
+ "AREAID":"101251210",
+ "NAMECN":"芷江"
+ },
+ "溆浦":{
+ "AREAID":"101251211",
+ "NAMECN":"溆浦"
+ },
+ "中方":{
+ "AREAID":"101251212",
+ "NAMECN":"中方"
+ },
+ "洪江":{
+ "AREAID":"101251213",
+ "NAMECN":"洪江"
+ }
+ },
+ "永州":{
+ "永州":{
+ "AREAID":"101251401",
+ "NAMECN":"永州"
+ },
+ "祁阳":{
+ "AREAID":"101251402",
+ "NAMECN":"祁阳"
+ },
+ "东安":{
+ "AREAID":"101251403",
+ "NAMECN":"东安"
+ },
+ "双牌":{
+ "AREAID":"101251404",
+ "NAMECN":"双牌"
+ },
+ "道县":{
+ "AREAID":"101251405",
+ "NAMECN":"道县"
+ },
+ "宁远":{
+ "AREAID":"101251406",
+ "NAMECN":"宁远"
+ },
+ "江永":{
+ "AREAID":"101251407",
+ "NAMECN":"江永"
+ },
+ "蓝山":{
+ "AREAID":"101251408",
+ "NAMECN":"蓝山"
+ },
+ "新田":{
+ "AREAID":"101251409",
+ "NAMECN":"新田"
+ },
+ "江华":{
+ "AREAID":"101251410",
+ "NAMECN":"江华"
+ },
+ "冷水滩":{
+ "AREAID":"101251411",
+ "NAMECN":"冷水滩"
+ },
+ "零陵":{
+ "AREAID":"101251412",
+ "NAMECN":"零陵"
+ }
+ },
+ "湘西":{
+ "吉首":{
+ "AREAID":"101251501",
+ "NAMECN":"吉首"
+ },
+ "保靖":{
+ "AREAID":"101251502",
+ "NAMECN":"保靖"
+ },
+ "永顺":{
+ "AREAID":"101251503",
+ "NAMECN":"永顺"
+ },
+ "古丈":{
+ "AREAID":"101251504",
+ "NAMECN":"古丈"
+ },
+ "凤凰":{
+ "AREAID":"101251505",
+ "NAMECN":"凤凰"
+ },
+ "泸溪":{
+ "AREAID":"101251506",
+ "NAMECN":"泸溪"
+ },
+ "龙山":{
+ "AREAID":"101251507",
+ "NAMECN":"龙山"
+ },
+ "花垣":{
+ "AREAID":"101251508",
+ "NAMECN":"花垣"
+ },
+ "湘西":{
+ "AREAID":"101251509",
+ "NAMECN":"湘西"
+ }
+ }
+ },
+ "贵州":{
+ "贵阳":{
+ "贵阳":{
+ "AREAID":"101260101",
+ "NAMECN":"贵阳"
+ },
+ "白云":{
+ "AREAID":"101260102",
+ "NAMECN":"白云"
+ },
+ "花溪":{
+ "AREAID":"101260103",
+ "NAMECN":"花溪"
+ },
+ "乌当":{
+ "AREAID":"101260104",
+ "NAMECN":"乌当"
+ },
+ "息烽":{
+ "AREAID":"101260105",
+ "NAMECN":"息烽"
+ },
+ "开阳":{
+ "AREAID":"101260106",
+ "NAMECN":"开阳"
+ },
+ "修文":{
+ "AREAID":"101260107",
+ "NAMECN":"修文"
+ },
+ "清镇":{
+ "AREAID":"101260108",
+ "NAMECN":"清镇"
+ },
+ "云岩":{
+ "AREAID":"101260110",
+ "NAMECN":"云岩"
+ },
+ "南明":{
+ "AREAID":"101260111",
+ "NAMECN":"南明"
+ },
+ "观山湖":{
+ "AREAID":"101260112",
+ "NAMECN":"观山湖"
+ }
+ },
+ "遵义":{
+ "遵义":{
+ "AREAID":"101260201",
+ "NAMECN":"遵义"
+ },
+ "仁怀":{
+ "AREAID":"101260203",
+ "NAMECN":"仁怀"
+ },
+ "绥阳":{
+ "AREAID":"101260204",
+ "NAMECN":"绥阳"
+ },
+ "湄潭":{
+ "AREAID":"101260205",
+ "NAMECN":"湄潭"
+ },
+ "凤冈":{
+ "AREAID":"101260206",
+ "NAMECN":"凤冈"
+ },
+ "桐梓":{
+ "AREAID":"101260207",
+ "NAMECN":"桐梓"
+ },
+ "赤水":{
+ "AREAID":"101260208",
+ "NAMECN":"赤水"
+ },
+ "习水":{
+ "AREAID":"101260209",
+ "NAMECN":"习水"
+ },
+ "道真":{
+ "AREAID":"101260210",
+ "NAMECN":"道真"
+ },
+ "正安":{
+ "AREAID":"101260211",
+ "NAMECN":"正安"
+ },
+ "务川":{
+ "AREAID":"101260212",
+ "NAMECN":"务川"
+ },
+ "余庆":{
+ "AREAID":"101260213",
+ "NAMECN":"余庆"
+ },
+ "汇川":{
+ "AREAID":"101260214",
+ "NAMECN":"汇川"
+ },
+ "红花岗":{
+ "AREAID":"101260215",
+ "NAMECN":"红花岗"
+ },
+ "播州":{
+ "AREAID":"101260216",
+ "NAMECN":"播州"
+ }
+ },
+ "安顺":{
+ "安顺":{
+ "AREAID":"101260301",
+ "NAMECN":"安顺"
+ },
+ "普定":{
+ "AREAID":"101260302",
+ "NAMECN":"普定"
+ },
+ "镇宁":{
+ "AREAID":"101260303",
+ "NAMECN":"镇宁"
+ },
+ "平坝":{
+ "AREAID":"101260304",
+ "NAMECN":"平坝"
+ },
+ "紫云":{
+ "AREAID":"101260305",
+ "NAMECN":"紫云"
+ },
+ "关岭":{
+ "AREAID":"101260306",
+ "NAMECN":"关岭"
+ },
+ "西秀":{
+ "AREAID":"101260307",
+ "NAMECN":"西秀"
+ }
+ },
+ "黔南":{
+ "都匀":{
+ "AREAID":"101260401",
+ "NAMECN":"都匀"
+ },
+ "贵定":{
+ "AREAID":"101260402",
+ "NAMECN":"贵定"
+ },
+ "瓮安":{
+ "AREAID":"101260403",
+ "NAMECN":"瓮安"
+ },
+ "长顺":{
+ "AREAID":"101260404",
+ "NAMECN":"长顺"
+ },
+ "福泉":{
+ "AREAID":"101260405",
+ "NAMECN":"福泉"
+ },
+ "惠水":{
+ "AREAID":"101260406",
+ "NAMECN":"惠水"
+ },
+ "龙里":{
+ "AREAID":"101260407",
+ "NAMECN":"龙里"
+ },
+ "罗甸":{
+ "AREAID":"101260408",
+ "NAMECN":"罗甸"
+ },
+ "平塘":{
+ "AREAID":"101260409",
+ "NAMECN":"平塘"
+ },
+ "独山":{
+ "AREAID":"101260410",
+ "NAMECN":"独山"
+ },
+ "三都":{
+ "AREAID":"101260411",
+ "NAMECN":"三都"
+ },
+ "荔波":{
+ "AREAID":"101260412",
+ "NAMECN":"荔波"
+ },
+ "黔南":{
+ "AREAID":"101260413",
+ "NAMECN":"黔南"
+ }
+ },
+ "黔东南":{
+ "凯里":{
+ "AREAID":"101260501",
+ "NAMECN":"凯里"
+ },
+ "岑巩":{
+ "AREAID":"101260502",
+ "NAMECN":"岑巩"
+ },
+ "施秉":{
+ "AREAID":"101260503",
+ "NAMECN":"施秉"
+ },
+ "镇远":{
+ "AREAID":"101260504",
+ "NAMECN":"镇远"
+ },
+ "黄平":{
+ "AREAID":"101260505",
+ "NAMECN":"黄平"
+ },
+ "黔东南":{
+ "AREAID":"101260506",
+ "NAMECN":"黔东南"
+ },
+ "麻江":{
+ "AREAID":"101260507",
+ "NAMECN":"麻江"
+ },
+ "丹寨":{
+ "AREAID":"101260508",
+ "NAMECN":"丹寨"
+ },
+ "三穗":{
+ "AREAID":"101260509",
+ "NAMECN":"三穗"
+ },
+ "台江":{
+ "AREAID":"101260510",
+ "NAMECN":"台江"
+ },
+ "剑河":{
+ "AREAID":"101260511",
+ "NAMECN":"剑河"
+ },
+ "雷山":{
+ "AREAID":"101260512",
+ "NAMECN":"雷山"
+ },
+ "黎平":{
+ "AREAID":"101260513",
+ "NAMECN":"黎平"
+ },
+ "天柱":{
+ "AREAID":"101260514",
+ "NAMECN":"天柱"
+ },
+ "锦屏":{
+ "AREAID":"101260515",
+ "NAMECN":"锦屏"
+ },
+ "榕江":{
+ "AREAID":"101260516",
+ "NAMECN":"榕江"
+ },
+ "从江":{
+ "AREAID":"101260517",
+ "NAMECN":"从江"
+ }
+ },
+ "铜仁":{
+ "铜仁":{
+ "AREAID":"101260601",
+ "NAMECN":"铜仁"
+ },
+ "江口":{
+ "AREAID":"101260602",
+ "NAMECN":"江口"
+ },
+ "玉屏":{
+ "AREAID":"101260603",
+ "NAMECN":"玉屏"
+ },
+ "万山":{
+ "AREAID":"101260604",
+ "NAMECN":"万山"
+ },
+ "思南":{
+ "AREAID":"101260605",
+ "NAMECN":"思南"
+ },
+ "碧江":{
+ "AREAID":"101260606",
+ "NAMECN":"碧江"
+ },
+ "印江":{
+ "AREAID":"101260607",
+ "NAMECN":"印江"
+ },
+ "石阡":{
+ "AREAID":"101260608",
+ "NAMECN":"石阡"
+ },
+ "沿河":{
+ "AREAID":"101260609",
+ "NAMECN":"沿河"
+ },
+ "德江":{
+ "AREAID":"101260610",
+ "NAMECN":"德江"
+ },
+ "松桃":{
+ "AREAID":"101260611",
+ "NAMECN":"松桃"
+ }
+ },
+ "毕节":{
+ "毕节":{
+ "AREAID":"101260701",
+ "NAMECN":"毕节"
+ },
+ "赫章":{
+ "AREAID":"101260702",
+ "NAMECN":"赫章"
+ },
+ "金沙":{
+ "AREAID":"101260703",
+ "NAMECN":"金沙"
+ },
+ "威宁":{
+ "AREAID":"101260704",
+ "NAMECN":"威宁"
+ },
+ "大方":{
+ "AREAID":"101260705",
+ "NAMECN":"大方"
+ },
+ "纳雍":{
+ "AREAID":"101260706",
+ "NAMECN":"纳雍"
+ },
+ "织金":{
+ "AREAID":"101260707",
+ "NAMECN":"织金"
+ },
+ "黔西":{
+ "AREAID":"101260708",
+ "NAMECN":"黔西"
+ },
+ "七星关":{
+ "AREAID":"101260709",
+ "NAMECN":"七星关"
+ }
+ },
+ "六盘水":{
+ "水城":{
+ "AREAID":"101260801",
+ "NAMECN":"水城"
+ },
+ "六枝":{
+ "AREAID":"101260802",
+ "NAMECN":"六枝"
+ },
+ "六盘水":{
+ "AREAID":"101260803",
+ "NAMECN":"六盘水"
+ },
+ "盘州":{
+ "AREAID":"101260804",
+ "NAMECN":"盘州"
+ },
+ "钟山":{
+ "AREAID":"101260805",
+ "NAMECN":"钟山"
+ }
+ },
+ "黔西南":{
+ "兴义":{
+ "AREAID":"101260901",
+ "NAMECN":"兴义"
+ },
+ "晴隆":{
+ "AREAID":"101260902",
+ "NAMECN":"晴隆"
+ },
+ "兴仁":{
+ "AREAID":"101260903",
+ "NAMECN":"兴仁"
+ },
+ "贞丰":{
+ "AREAID":"101260904",
+ "NAMECN":"贞丰"
+ },
+ "望谟":{
+ "AREAID":"101260905",
+ "NAMECN":"望谟"
+ },
+ "黔西南":{
+ "AREAID":"101260906",
+ "NAMECN":"黔西南"
+ },
+ "安龙":{
+ "AREAID":"101260907",
+ "NAMECN":"安龙"
+ },
+ "册亨":{
+ "AREAID":"101260908",
+ "NAMECN":"册亨"
+ },
+ "普安":{
+ "AREAID":"101260909",
+ "NAMECN":"普安"
+ }
+ }
+ },
+ "四川":{
+ "成都":{
+ "成都":{
+ "AREAID":"101270101",
+ "NAMECN":"成都"
+ },
+ "龙泉驿":{
+ "AREAID":"101270102",
+ "NAMECN":"龙泉驿"
+ },
+ "新都":{
+ "AREAID":"101270103",
+ "NAMECN":"新都"
+ },
+ "温江":{
+ "AREAID":"101270104",
+ "NAMECN":"温江"
+ },
+ "金堂":{
+ "AREAID":"101270105",
+ "NAMECN":"金堂"
+ },
+ "双流":{
+ "AREAID":"101270106",
+ "NAMECN":"双流"
+ },
+ "郫都":{
+ "AREAID":"101270107",
+ "NAMECN":"郫都"
+ },
+ "大邑":{
+ "AREAID":"101270108",
+ "NAMECN":"大邑"
+ },
+ "蒲江":{
+ "AREAID":"101270109",
+ "NAMECN":"蒲江"
+ },
+ "新津":{
+ "AREAID":"101270110",
+ "NAMECN":"新津"
+ },
+ "都江堰":{
+ "AREAID":"101270111",
+ "NAMECN":"都江堰"
+ },
+ "彭州":{
+ "AREAID":"101270112",
+ "NAMECN":"彭州"
+ },
+ "邛崃":{
+ "AREAID":"101270113",
+ "NAMECN":"邛崃"
+ },
+ "崇州":{
+ "AREAID":"101270114",
+ "NAMECN":"崇州"
+ },
+ "青白江":{
+ "AREAID":"101270115",
+ "NAMECN":"青白江"
+ },
+ "锦江":{
+ "AREAID":"101270116",
+ "NAMECN":"锦江"
+ },
+ "青羊":{
+ "AREAID":"101270117",
+ "NAMECN":"青羊"
+ },
+ "金牛":{
+ "AREAID":"101270118",
+ "NAMECN":"金牛"
+ },
+ "武侯":{
+ "AREAID":"101270119",
+ "NAMECN":"武侯"
+ },
+ "成华":{
+ "AREAID":"101270120",
+ "NAMECN":"成华"
+ },
+ "简阳":{
+ "AREAID":"101270121",
+ "NAMECN":"简阳"
+ }
+ },
+ "攀枝花":{
+ "攀枝花":{
+ "AREAID":"101270201",
+ "NAMECN":"攀枝花"
+ },
+ "仁和":{
+ "AREAID":"101270202",
+ "NAMECN":"仁和"
+ },
+ "米易":{
+ "AREAID":"101270203",
+ "NAMECN":"米易"
+ },
+ "盐边":{
+ "AREAID":"101270204",
+ "NAMECN":"盐边"
+ },
+ "东区":{
+ "AREAID":"101270205",
+ "NAMECN":"东区"
+ },
+ "西区":{
+ "AREAID":"101270206",
+ "NAMECN":"西区"
+ }
+ },
+ "自贡":{
+ "自贡":{
+ "AREAID":"101270301",
+ "NAMECN":"自贡"
+ },
+ "富顺":{
+ "AREAID":"101270302",
+ "NAMECN":"富顺"
+ },
+ "荣县":{
+ "AREAID":"101270303",
+ "NAMECN":"荣县"
+ },
+ "自流井":{
+ "AREAID":"101270304",
+ "NAMECN":"自流井"
+ },
+ "贡井":{
+ "AREAID":"101270305",
+ "NAMECN":"贡井"
+ },
+ "大安":{
+ "AREAID":"101270306",
+ "NAMECN":"大安"
+ },
+ "沿滩":{
+ "AREAID":"101270307",
+ "NAMECN":"沿滩"
+ }
+ },
+ "绵阳":{
+ "绵阳":{
+ "AREAID":"101270401",
+ "NAMECN":"绵阳"
+ },
+ "三台":{
+ "AREAID":"101270402",
+ "NAMECN":"三台"
+ },
+ "盐亭":{
+ "AREAID":"101270403",
+ "NAMECN":"盐亭"
+ },
+ "梓潼":{
+ "AREAID":"101270405",
+ "NAMECN":"梓潼"
+ },
+ "北川":{
+ "AREAID":"101270406",
+ "NAMECN":"北川"
+ },
+ "平武":{
+ "AREAID":"101270407",
+ "NAMECN":"平武"
+ },
+ "江油":{
+ "AREAID":"101270408",
+ "NAMECN":"江油"
+ },
+ "涪城":{
+ "AREAID":"101270409",
+ "NAMECN":"涪城"
+ },
+ "游仙":{
+ "AREAID":"101270410",
+ "NAMECN":"游仙"
+ },
+ "安州":{
+ "AREAID":"101270411",
+ "NAMECN":"安州"
+ }
+ },
+ "南充":{
+ "南充":{
+ "AREAID":"101270501",
+ "NAMECN":"南充"
+ },
+ "南部":{
+ "AREAID":"101270502",
+ "NAMECN":"南部"
+ },
+ "营山":{
+ "AREAID":"101270503",
+ "NAMECN":"营山"
+ },
+ "蓬安":{
+ "AREAID":"101270504",
+ "NAMECN":"蓬安"
+ },
+ "仪陇":{
+ "AREAID":"101270505",
+ "NAMECN":"仪陇"
+ },
+ "西充":{
+ "AREAID":"101270506",
+ "NAMECN":"西充"
+ },
+ "阆中":{
+ "AREAID":"101270507",
+ "NAMECN":"阆中"
+ },
+ "顺庆":{
+ "AREAID":"101270508",
+ "NAMECN":"顺庆"
+ },
+ "高坪":{
+ "AREAID":"101270509",
+ "NAMECN":"高坪"
+ },
+ "嘉陵":{
+ "AREAID":"101270510",
+ "NAMECN":"嘉陵"
+ }
+ },
+ "达州":{
+ "达州":{
+ "AREAID":"101270601",
+ "NAMECN":"达州"
+ },
+ "宣汉":{
+ "AREAID":"101270602",
+ "NAMECN":"宣汉"
+ },
+ "开江":{
+ "AREAID":"101270603",
+ "NAMECN":"开江"
+ },
+ "大竹":{
+ "AREAID":"101270604",
+ "NAMECN":"大竹"
+ },
+ "渠县":{
+ "AREAID":"101270605",
+ "NAMECN":"渠县"
+ },
+ "万源":{
+ "AREAID":"101270606",
+ "NAMECN":"万源"
+ },
+ "通川":{
+ "AREAID":"101270607",
+ "NAMECN":"通川"
+ },
+ "达川":{
+ "AREAID":"101270608",
+ "NAMECN":"达川"
+ }
+ },
+ "遂宁":{
+ "遂宁":{
+ "AREAID":"101270701",
+ "NAMECN":"遂宁"
+ },
+ "蓬溪":{
+ "AREAID":"101270702",
+ "NAMECN":"蓬溪"
+ },
+ "射洪":{
+ "AREAID":"101270703",
+ "NAMECN":"射洪"
+ },
+ "船山":{
+ "AREAID":"101270704",
+ "NAMECN":"船山"
+ },
+ "安居":{
+ "AREAID":"101270705",
+ "NAMECN":"安居"
+ },
+ "大英":{
+ "AREAID":"101270706",
+ "NAMECN":"大英"
+ }
+ },
+ "广安":{
+ "广安":{
+ "AREAID":"101270801",
+ "NAMECN":"广安"
+ },
+ "岳池":{
+ "AREAID":"101270802",
+ "NAMECN":"岳池"
+ },
+ "武胜":{
+ "AREAID":"101270803",
+ "NAMECN":"武胜"
+ },
+ "邻水":{
+ "AREAID":"101270804",
+ "NAMECN":"邻水"
+ },
+ "华蓥":{
+ "AREAID":"101270805",
+ "NAMECN":"华蓥"
+ },
+ "前锋":{
+ "AREAID":"101270806",
+ "NAMECN":"前锋"
+ }
+ },
+ "巴中":{
+ "巴中":{
+ "AREAID":"101270901",
+ "NAMECN":"巴中"
+ },
+ "通江":{
+ "AREAID":"101270902",
+ "NAMECN":"通江"
+ },
+ "南江":{
+ "AREAID":"101270903",
+ "NAMECN":"南江"
+ },
+ "平昌":{
+ "AREAID":"101270904",
+ "NAMECN":"平昌"
+ },
+ "巴州":{
+ "AREAID":"101270905",
+ "NAMECN":"巴州"
+ },
+ "恩阳":{
+ "AREAID":"101270906",
+ "NAMECN":"恩阳"
+ }
+ },
+ "泸州":{
+ "泸州":{
+ "AREAID":"101271001",
+ "NAMECN":"泸州"
+ },
+ "江阳":{
+ "AREAID":"101271002",
+ "NAMECN":"江阳"
+ },
+ "泸县":{
+ "AREAID":"101271003",
+ "NAMECN":"泸县"
+ },
+ "合江":{
+ "AREAID":"101271004",
+ "NAMECN":"合江"
+ },
+ "叙永":{
+ "AREAID":"101271005",
+ "NAMECN":"叙永"
+ },
+ "古蔺":{
+ "AREAID":"101271006",
+ "NAMECN":"古蔺"
+ },
+ "纳溪":{
+ "AREAID":"101271007",
+ "NAMECN":"纳溪"
+ },
+ "龙马潭":{
+ "AREAID":"101271008",
+ "NAMECN":"龙马潭"
+ }
+ },
+ "宜宾":{
+ "宜宾":{
+ "AREAID":"101271101",
+ "NAMECN":"宜宾"
+ },
+ "翠屏":{
+ "AREAID":"101271102",
+ "NAMECN":"翠屏"
+ },
+ "宜宾县":{
+ "AREAID":"101271103",
+ "NAMECN":"宜宾县"
+ },
+ "南溪":{
+ "AREAID":"101271104",
+ "NAMECN":"南溪"
+ },
+ "江安":{
+ "AREAID":"101271105",
+ "NAMECN":"江安"
+ },
+ "长宁":{
+ "AREAID":"101271106",
+ "NAMECN":"长宁"
+ },
+ "高县":{
+ "AREAID":"101271107",
+ "NAMECN":"高县"
+ },
+ "珙县":{
+ "AREAID":"101271108",
+ "NAMECN":"珙县"
+ },
+ "筠连":{
+ "AREAID":"101271109",
+ "NAMECN":"筠连"
+ },
+ "兴文":{
+ "AREAID":"101271110",
+ "NAMECN":"兴文"
+ },
+ "屏山":{
+ "AREAID":"101271111",
+ "NAMECN":"屏山"
+ }
+ },
+ "内江":{
+ "内江":{
+ "AREAID":"101271201",
+ "NAMECN":"内江"
+ },
+ "东兴":{
+ "AREAID":"101271202",
+ "NAMECN":"东兴"
+ },
+ "威远":{
+ "AREAID":"101271203",
+ "NAMECN":"威远"
+ },
+ "资中":{
+ "AREAID":"101271204",
+ "NAMECN":"资中"
+ },
+ "隆昌":{
+ "AREAID":"101271205",
+ "NAMECN":"隆昌"
+ },
+ "市中":{
+ "AREAID":"101271206",
+ "NAMECN":"市中"
+ }
+ },
+ "资阳":{
+ "资阳":{
+ "AREAID":"101271301",
+ "NAMECN":"资阳"
+ },
+ "安岳":{
+ "AREAID":"101271302",
+ "NAMECN":"安岳"
+ },
+ "乐至":{
+ "AREAID":"101271303",
+ "NAMECN":"乐至"
+ },
+ "雁江":{
+ "AREAID":"101271305",
+ "NAMECN":"雁江"
+ }
+ },
+ "乐山":{
+ "乐山":{
+ "AREAID":"101271401",
+ "NAMECN":"乐山"
+ },
+ "犍为":{
+ "AREAID":"101271402",
+ "NAMECN":"犍为"
+ },
+ "井研":{
+ "AREAID":"101271403",
+ "NAMECN":"井研"
+ },
+ "夹江":{
+ "AREAID":"101271404",
+ "NAMECN":"夹江"
+ },
+ "沐川":{
+ "AREAID":"101271405",
+ "NAMECN":"沐川"
+ },
+ "峨边":{
+ "AREAID":"101271406",
+ "NAMECN":"峨边"
+ },
+ "马边":{
+ "AREAID":"101271407",
+ "NAMECN":"马边"
+ },
+ "峨眉山":{
+ "AREAID":"101271409",
+ "NAMECN":"峨眉山"
+ },
+ "市中":{
+ "AREAID":"101271410",
+ "NAMECN":"市中"
+ },
+ "沙湾":{
+ "AREAID":"101271411",
+ "NAMECN":"沙湾"
+ },
+ "五通桥":{
+ "AREAID":"101271412",
+ "NAMECN":"五通桥"
+ },
+ "金口河":{
+ "AREAID":"101271413",
+ "NAMECN":"金口河"
+ },
+ "峨眉山市":{
+ "AREAID":"101271414",
+ "NAMECN":"峨眉山市"
+ }
+ },
+ "眉山":{
+ "眉山":{
+ "AREAID":"101271501",
+ "NAMECN":"眉山"
+ },
+ "仁寿":{
+ "AREAID":"101271502",
+ "NAMECN":"仁寿"
+ },
+ "彭山":{
+ "AREAID":"101271503",
+ "NAMECN":"彭山"
+ },
+ "洪雅":{
+ "AREAID":"101271504",
+ "NAMECN":"洪雅"
+ },
+ "丹棱":{
+ "AREAID":"101271505",
+ "NAMECN":"丹棱"
+ },
+ "青神":{
+ "AREAID":"101271506",
+ "NAMECN":"青神"
+ },
+ "东坡":{
+ "AREAID":"101271507",
+ "NAMECN":"东坡"
+ }
+ },
+ "凉山":{
+ "凉山":{
+ "AREAID":"101271601",
+ "NAMECN":"凉山"
+ },
+ "木里":{
+ "AREAID":"101271603",
+ "NAMECN":"木里"
+ },
+ "盐源":{
+ "AREAID":"101271604",
+ "NAMECN":"盐源"
+ },
+ "德昌":{
+ "AREAID":"101271605",
+ "NAMECN":"德昌"
+ },
+ "会理":{
+ "AREAID":"101271606",
+ "NAMECN":"会理"
+ },
+ "会东":{
+ "AREAID":"101271607",
+ "NAMECN":"会东"
+ },
+ "宁南":{
+ "AREAID":"101271608",
+ "NAMECN":"宁南"
+ },
+ "普格":{
+ "AREAID":"101271609",
+ "NAMECN":"普格"
+ },
+ "西昌":{
+ "AREAID":"101271610",
+ "NAMECN":"西昌"
+ },
+ "金阳":{
+ "AREAID":"101271611",
+ "NAMECN":"金阳"
+ },
+ "昭觉":{
+ "AREAID":"101271612",
+ "NAMECN":"昭觉"
+ },
+ "喜德":{
+ "AREAID":"101271613",
+ "NAMECN":"喜德"
+ },
+ "冕宁":{
+ "AREAID":"101271614",
+ "NAMECN":"冕宁"
+ },
+ "越西":{
+ "AREAID":"101271615",
+ "NAMECN":"越西"
+ },
+ "甘洛":{
+ "AREAID":"101271616",
+ "NAMECN":"甘洛"
+ },
+ "雷波":{
+ "AREAID":"101271617",
+ "NAMECN":"雷波"
+ },
+ "美姑":{
+ "AREAID":"101271618",
+ "NAMECN":"美姑"
+ },
+ "布拖":{
+ "AREAID":"101271619",
+ "NAMECN":"布拖"
+ }
+ },
+ "雅安":{
+ "雅安":{
+ "AREAID":"101271701",
+ "NAMECN":"雅安"
+ },
+ "名山":{
+ "AREAID":"101271702",
+ "NAMECN":"名山"
+ },
+ "荥经":{
+ "AREAID":"101271703",
+ "NAMECN":"荥经"
+ },
+ "汉源":{
+ "AREAID":"101271704",
+ "NAMECN":"汉源"
+ },
+ "石棉":{
+ "AREAID":"101271705",
+ "NAMECN":"石棉"
+ },
+ "天全":{
+ "AREAID":"101271706",
+ "NAMECN":"天全"
+ },
+ "芦山":{
+ "AREAID":"101271707",
+ "NAMECN":"芦山"
+ },
+ "宝兴":{
+ "AREAID":"101271708",
+ "NAMECN":"宝兴"
+ },
+ "雨城":{
+ "AREAID":"101271709",
+ "NAMECN":"雨城"
+ }
+ },
+ "甘孜":{
+ "甘孜":{
+ "AREAID":"101271801",
+ "NAMECN":"甘孜"
+ },
+ "康定":{
+ "AREAID":"101271802",
+ "NAMECN":"康定"
+ },
+ "泸定":{
+ "AREAID":"101271803",
+ "NAMECN":"泸定"
+ },
+ "丹巴":{
+ "AREAID":"101271804",
+ "NAMECN":"丹巴"
+ },
+ "九龙":{
+ "AREAID":"101271805",
+ "NAMECN":"九龙"
+ },
+ "雅江":{
+ "AREAID":"101271806",
+ "NAMECN":"雅江"
+ },
+ "道孚":{
+ "AREAID":"101271807",
+ "NAMECN":"道孚"
+ },
+ "炉霍":{
+ "AREAID":"101271808",
+ "NAMECN":"炉霍"
+ },
+ "新龙":{
+ "AREAID":"101271809",
+ "NAMECN":"新龙"
+ },
+ "德格":{
+ "AREAID":"101271810",
+ "NAMECN":"德格"
+ },
+ "白玉":{
+ "AREAID":"101271811",
+ "NAMECN":"白玉"
+ },
+ "石渠":{
+ "AREAID":"101271812",
+ "NAMECN":"石渠"
+ },
+ "色达":{
+ "AREAID":"101271813",
+ "NAMECN":"色达"
+ },
+ "理塘":{
+ "AREAID":"101271814",
+ "NAMECN":"理塘"
+ },
+ "巴塘":{
+ "AREAID":"101271815",
+ "NAMECN":"巴塘"
+ },
+ "乡城":{
+ "AREAID":"101271816",
+ "NAMECN":"乡城"
+ },
+ "稻城":{
+ "AREAID":"101271817",
+ "NAMECN":"稻城"
+ },
+ "得荣":{
+ "AREAID":"101271818",
+ "NAMECN":"得荣"
+ }
+ },
+ "阿坝":{
+ "阿坝":{
+ "AREAID":"101271901",
+ "NAMECN":"阿坝"
+ },
+ "汶川":{
+ "AREAID":"101271902",
+ "NAMECN":"汶川"
+ },
+ "理县":{
+ "AREAID":"101271903",
+ "NAMECN":"理县"
+ },
+ "茂县":{
+ "AREAID":"101271904",
+ "NAMECN":"茂县"
+ },
+ "松潘":{
+ "AREAID":"101271905",
+ "NAMECN":"松潘"
+ },
+ "九寨沟":{
+ "AREAID":"101271906",
+ "NAMECN":"九寨沟"
+ },
+ "金川":{
+ "AREAID":"101271907",
+ "NAMECN":"金川"
+ },
+ "小金":{
+ "AREAID":"101271908",
+ "NAMECN":"小金"
+ },
+ "黑水":{
+ "AREAID":"101271909",
+ "NAMECN":"黑水"
+ },
+ "马尔康":{
+ "AREAID":"101271910",
+ "NAMECN":"马尔康"
+ },
+ "壤塘":{
+ "AREAID":"101271911",
+ "NAMECN":"壤塘"
+ },
+ "若尔盖":{
+ "AREAID":"101271912",
+ "NAMECN":"若尔盖"
+ },
+ "红原":{
+ "AREAID":"101271913",
+ "NAMECN":"红原"
+ }
+ },
+ "德阳":{
+ "德阳":{
+ "AREAID":"101272001",
+ "NAMECN":"德阳"
+ },
+ "中江":{
+ "AREAID":"101272002",
+ "NAMECN":"中江"
+ },
+ "广汉":{
+ "AREAID":"101272003",
+ "NAMECN":"广汉"
+ },
+ "什邡":{
+ "AREAID":"101272004",
+ "NAMECN":"什邡"
+ },
+ "绵竹":{
+ "AREAID":"101272005",
+ "NAMECN":"绵竹"
+ },
+ "罗江":{
+ "AREAID":"101272006",
+ "NAMECN":"罗江"
+ },
+ "旌阳":{
+ "AREAID":"101272007",
+ "NAMECN":"旌阳"
+ }
+ },
+ "广元":{
+ "广元":{
+ "AREAID":"101272101",
+ "NAMECN":"广元"
+ },
+ "旺苍":{
+ "AREAID":"101272102",
+ "NAMECN":"旺苍"
+ },
+ "青川":{
+ "AREAID":"101272103",
+ "NAMECN":"青川"
+ },
+ "剑阁":{
+ "AREAID":"101272104",
+ "NAMECN":"剑阁"
+ },
+ "苍溪":{
+ "AREAID":"101272105",
+ "NAMECN":"苍溪"
+ },
+ "利州":{
+ "AREAID":"101272106",
+ "NAMECN":"利州"
+ },
+ "昭化":{
+ "AREAID":"101272107",
+ "NAMECN":"昭化"
+ },
+ "朝天":{
+ "AREAID":"101272108",
+ "NAMECN":"朝天"
+ }
+ }
+ },
+ "广东":{
+ "广州":{
+ "广州":{
+ "AREAID":"101280101",
+ "NAMECN":"广州"
+ },
+ "番禺":{
+ "AREAID":"101280102",
+ "NAMECN":"番禺"
+ },
+ "从化":{
+ "AREAID":"101280103",
+ "NAMECN":"从化"
+ },
+ "增城":{
+ "AREAID":"101280104",
+ "NAMECN":"增城"
+ },
+ "花都":{
+ "AREAID":"101280105",
+ "NAMECN":"花都"
+ },
+ "荔湾":{
+ "AREAID":"101280106",
+ "NAMECN":"荔湾"
+ },
+ "越秀":{
+ "AREAID":"101280107",
+ "NAMECN":"越秀"
+ },
+ "海珠":{
+ "AREAID":"101280108",
+ "NAMECN":"海珠"
+ },
+ "天河":{
+ "AREAID":"101280109",
+ "NAMECN":"天河"
+ },
+ "白云":{
+ "AREAID":"101280110",
+ "NAMECN":"白云"
+ },
+ "黄埔":{
+ "AREAID":"101280111",
+ "NAMECN":"黄埔"
+ },
+ "南沙":{
+ "AREAID":"101280112",
+ "NAMECN":"南沙"
+ }
+ },
+ "韶关":{
+ "韶关":{
+ "AREAID":"101280201",
+ "NAMECN":"韶关"
+ },
+ "乳源":{
+ "AREAID":"101280202",
+ "NAMECN":"乳源"
+ },
+ "始兴":{
+ "AREAID":"101280203",
+ "NAMECN":"始兴"
+ },
+ "翁源":{
+ "AREAID":"101280204",
+ "NAMECN":"翁源"
+ },
+ "乐昌":{
+ "AREAID":"101280205",
+ "NAMECN":"乐昌"
+ },
+ "仁化":{
+ "AREAID":"101280206",
+ "NAMECN":"仁化"
+ },
+ "南雄":{
+ "AREAID":"101280207",
+ "NAMECN":"南雄"
+ },
+ "新丰":{
+ "AREAID":"101280208",
+ "NAMECN":"新丰"
+ },
+ "曲江":{
+ "AREAID":"101280209",
+ "NAMECN":"曲江"
+ },
+ "浈江":{
+ "AREAID":"101280210",
+ "NAMECN":"浈江"
+ },
+ "武江":{
+ "AREAID":"101280211",
+ "NAMECN":"武江"
+ }
+ },
+ "惠州":{
+ "惠州":{
+ "AREAID":"101280301",
+ "NAMECN":"惠州"
+ },
+ "博罗":{
+ "AREAID":"101280302",
+ "NAMECN":"博罗"
+ },
+ "惠阳":{
+ "AREAID":"101280303",
+ "NAMECN":"惠阳"
+ },
+ "惠东":{
+ "AREAID":"101280304",
+ "NAMECN":"惠东"
+ },
+ "龙门":{
+ "AREAID":"101280305",
+ "NAMECN":"龙门"
+ },
+ "惠城":{
+ "AREAID":"101280306",
+ "NAMECN":"惠城"
+ }
+ },
+ "梅州":{
+ "梅州":{
+ "AREAID":"101280401",
+ "NAMECN":"梅州"
+ },
+ "兴宁":{
+ "AREAID":"101280402",
+ "NAMECN":"兴宁"
+ },
+ "蕉岭":{
+ "AREAID":"101280403",
+ "NAMECN":"蕉岭"
+ },
+ "大埔":{
+ "AREAID":"101280404",
+ "NAMECN":"大埔"
+ },
+ "梅江":{
+ "AREAID":"101280405",
+ "NAMECN":"梅江"
+ },
+ "丰顺":{
+ "AREAID":"101280406",
+ "NAMECN":"丰顺"
+ },
+ "平远":{
+ "AREAID":"101280407",
+ "NAMECN":"平远"
+ },
+ "五华":{
+ "AREAID":"101280408",
+ "NAMECN":"五华"
+ },
+ "梅县":{
+ "AREAID":"101280409",
+ "NAMECN":"梅县"
+ }
+ },
+ "汕头":{
+ "汕头":{
+ "AREAID":"101280501",
+ "NAMECN":"汕头"
+ },
+ "潮阳":{
+ "AREAID":"101280502",
+ "NAMECN":"潮阳"
+ },
+ "澄海":{
+ "AREAID":"101280503",
+ "NAMECN":"澄海"
+ },
+ "南澳":{
+ "AREAID":"101280504",
+ "NAMECN":"南澳"
+ },
+ "龙湖":{
+ "AREAID":"101280505",
+ "NAMECN":"龙湖"
+ },
+ "金平":{
+ "AREAID":"101280506",
+ "NAMECN":"金平"
+ },
+ "濠江":{
+ "AREAID":"101280507",
+ "NAMECN":"濠江"
+ },
+ "潮南":{
+ "AREAID":"101280508",
+ "NAMECN":"潮南"
+ }
+ },
+ "深圳":{
+ "深圳":{
+ "AREAID":"101280601",
+ "NAMECN":"深圳"
+ },
+ "罗湖":{
+ "AREAID":"101280602",
+ "NAMECN":"罗湖"
+ },
+ "福田":{
+ "AREAID":"101280603",
+ "NAMECN":"福田"
+ },
+ "南山":{
+ "AREAID":"101280604",
+ "NAMECN":"南山"
+ },
+ "宝安":{
+ "AREAID":"101280605",
+ "NAMECN":"宝安"
+ },
+ "龙岗":{
+ "AREAID":"101280606",
+ "NAMECN":"龙岗"
+ },
+ "盐田":{
+ "AREAID":"101280607",
+ "NAMECN":"盐田"
+ },
+ "龙华":{
+ "AREAID":"101280608",
+ "NAMECN":"龙华"
+ },
+ "坪山":{
+ "AREAID":"101280609",
+ "NAMECN":"坪山"
+ }
+ },
+ "珠海":{
+ "珠海":{
+ "AREAID":"101280701",
+ "NAMECN":"珠海"
+ },
+ "斗门":{
+ "AREAID":"101280702",
+ "NAMECN":"斗门"
+ },
+ "金湾":{
+ "AREAID":"101280703",
+ "NAMECN":"金湾"
+ },
+ "香洲":{
+ "AREAID":"101280704",
+ "NAMECN":"香洲"
+ }
+ },
+ "佛山":{
+ "佛山":{
+ "AREAID":"101280800",
+ "NAMECN":"佛山"
+ },
+ "顺德":{
+ "AREAID":"101280801",
+ "NAMECN":"顺德"
+ },
+ "三水":{
+ "AREAID":"101280802",
+ "NAMECN":"三水"
+ },
+ "南海":{
+ "AREAID":"101280803",
+ "NAMECN":"南海"
+ },
+ "高明":{
+ "AREAID":"101280804",
+ "NAMECN":"高明"
+ },
+ "禅城":{
+ "AREAID":"101280805",
+ "NAMECN":"禅城"
+ }
+ },
+ "肇庆":{
+ "肇庆":{
+ "AREAID":"101280901",
+ "NAMECN":"肇庆"
+ },
+ "广宁":{
+ "AREAID":"101280902",
+ "NAMECN":"广宁"
+ },
+ "四会":{
+ "AREAID":"101280903",
+ "NAMECN":"四会"
+ },
+ "端州":{
+ "AREAID":"101280904",
+ "NAMECN":"端州"
+ },
+ "德庆":{
+ "AREAID":"101280905",
+ "NAMECN":"德庆"
+ },
+ "怀集":{
+ "AREAID":"101280906",
+ "NAMECN":"怀集"
+ },
+ "封开":{
+ "AREAID":"101280907",
+ "NAMECN":"封开"
+ },
+ "高要":{
+ "AREAID":"101280908",
+ "NAMECN":"高要"
+ },
+ "鼎湖":{
+ "AREAID":"101280909",
+ "NAMECN":"鼎湖"
+ }
+ },
+ "湛江":{
+ "湛江":{
+ "AREAID":"101281001",
+ "NAMECN":"湛江"
+ },
+ "吴川":{
+ "AREAID":"101281002",
+ "NAMECN":"吴川"
+ },
+ "雷州":{
+ "AREAID":"101281003",
+ "NAMECN":"雷州"
+ },
+ "徐闻":{
+ "AREAID":"101281004",
+ "NAMECN":"徐闻"
+ },
+ "廉江":{
+ "AREAID":"101281005",
+ "NAMECN":"廉江"
+ },
+ "赤坎":{
+ "AREAID":"101281006",
+ "NAMECN":"赤坎"
+ },
+ "遂溪":{
+ "AREAID":"101281007",
+ "NAMECN":"遂溪"
+ },
+ "坡头":{
+ "AREAID":"101281008",
+ "NAMECN":"坡头"
+ },
+ "霞山":{
+ "AREAID":"101281009",
+ "NAMECN":"霞山"
+ },
+ "麻章":{
+ "AREAID":"101281010",
+ "NAMECN":"麻章"
+ }
+ },
+ "江门":{
+ "江门":{
+ "AREAID":"101281101",
+ "NAMECN":"江门"
+ },
+ "开平":{
+ "AREAID":"101281103",
+ "NAMECN":"开平"
+ },
+ "新会":{
+ "AREAID":"101281104",
+ "NAMECN":"新会"
+ },
+ "恩平":{
+ "AREAID":"101281105",
+ "NAMECN":"恩平"
+ },
+ "台山":{
+ "AREAID":"101281106",
+ "NAMECN":"台山"
+ },
+ "蓬江":{
+ "AREAID":"101281107",
+ "NAMECN":"蓬江"
+ },
+ "鹤山":{
+ "AREAID":"101281108",
+ "NAMECN":"鹤山"
+ },
+ "江海":{
+ "AREAID":"101281109",
+ "NAMECN":"江海"
+ }
+ },
+ "河源":{
+ "河源":{
+ "AREAID":"101281201",
+ "NAMECN":"河源"
+ },
+ "紫金":{
+ "AREAID":"101281202",
+ "NAMECN":"紫金"
+ },
+ "连平":{
+ "AREAID":"101281203",
+ "NAMECN":"连平"
+ },
+ "和平":{
+ "AREAID":"101281204",
+ "NAMECN":"和平"
+ },
+ "龙川":{
+ "AREAID":"101281205",
+ "NAMECN":"龙川"
+ },
+ "东源":{
+ "AREAID":"101281206",
+ "NAMECN":"东源"
+ },
+ "源城":{
+ "AREAID":"101281207",
+ "NAMECN":"源城"
+ }
+ },
+ "清远":{
+ "清远":{
+ "AREAID":"101281301",
+ "NAMECN":"清远"
+ },
+ "连南":{
+ "AREAID":"101281302",
+ "NAMECN":"连南"
+ },
+ "连州":{
+ "AREAID":"101281303",
+ "NAMECN":"连州"
+ },
+ "连山":{
+ "AREAID":"101281304",
+ "NAMECN":"连山"
+ },
+ "阳山":{
+ "AREAID":"101281305",
+ "NAMECN":"阳山"
+ },
+ "佛冈":{
+ "AREAID":"101281306",
+ "NAMECN":"佛冈"
+ },
+ "英德":{
+ "AREAID":"101281307",
+ "NAMECN":"英德"
+ },
+ "清新":{
+ "AREAID":"101281308",
+ "NAMECN":"清新"
+ },
+ "清城":{
+ "AREAID":"101281309",
+ "NAMECN":"清城"
+ }
+ },
+ "云浮":{
+ "云浮":{
+ "AREAID":"101281401",
+ "NAMECN":"云浮"
+ },
+ "罗定":{
+ "AREAID":"101281402",
+ "NAMECN":"罗定"
+ },
+ "新兴":{
+ "AREAID":"101281403",
+ "NAMECN":"新兴"
+ },
+ "郁南":{
+ "AREAID":"101281404",
+ "NAMECN":"郁南"
+ },
+ "云城":{
+ "AREAID":"101281405",
+ "NAMECN":"云城"
+ },
+ "云安":{
+ "AREAID":"101281406",
+ "NAMECN":"云安"
+ }
+ },
+ "潮州":{
+ "潮州":{
+ "AREAID":"101281501",
+ "NAMECN":"潮州"
+ },
+ "饶平":{
+ "AREAID":"101281502",
+ "NAMECN":"饶平"
+ },
+ "潮安":{
+ "AREAID":"101281503",
+ "NAMECN":"潮安"
+ },
+ "湘桥":{
+ "AREAID":"101281504",
+ "NAMECN":"湘桥"
+ }
+ },
+ "东莞":{
+ "东莞":{
+ "AREAID":"101281601",
+ "NAMECN":"东莞"
+ }
+ },
+ "中山":{
+ "中山":{
+ "AREAID":"101281701",
+ "NAMECN":"中山"
+ }
+ },
+ "阳江":{
+ "阳江":{
+ "AREAID":"101281801",
+ "NAMECN":"阳江"
+ },
+ "阳春":{
+ "AREAID":"101281802",
+ "NAMECN":"阳春"
+ },
+ "阳东":{
+ "AREAID":"101281803",
+ "NAMECN":"阳东"
+ },
+ "阳西":{
+ "AREAID":"101281804",
+ "NAMECN":"阳西"
+ },
+ "江城":{
+ "AREAID":"101281805",
+ "NAMECN":"江城"
+ }
+ },
+ "揭阳":{
+ "揭阳":{
+ "AREAID":"101281901",
+ "NAMECN":"揭阳"
+ },
+ "揭西":{
+ "AREAID":"101281902",
+ "NAMECN":"揭西"
+ },
+ "普宁":{
+ "AREAID":"101281903",
+ "NAMECN":"普宁"
+ },
+ "惠来":{
+ "AREAID":"101281904",
+ "NAMECN":"惠来"
+ },
+ "揭东":{
+ "AREAID":"101281905",
+ "NAMECN":"揭东"
+ },
+ "榕城":{
+ "AREAID":"101281906",
+ "NAMECN":"榕城"
+ }
+ },
+ "茂名":{
+ "茂名":{
+ "AREAID":"101282001",
+ "NAMECN":"茂名"
+ },
+ "高州":{
+ "AREAID":"101282002",
+ "NAMECN":"高州"
+ },
+ "化州":{
+ "AREAID":"101282003",
+ "NAMECN":"化州"
+ },
+ "电白":{
+ "AREAID":"101282004",
+ "NAMECN":"电白"
+ },
+ "信宜":{
+ "AREAID":"101282005",
+ "NAMECN":"信宜"
+ },
+ "茂南":{
+ "AREAID":"101282007",
+ "NAMECN":"茂南"
+ }
+ },
+ "汕尾":{
+ "汕尾":{
+ "AREAID":"101282101",
+ "NAMECN":"汕尾"
+ },
+ "海丰":{
+ "AREAID":"101282102",
+ "NAMECN":"海丰"
+ },
+ "陆丰":{
+ "AREAID":"101282103",
+ "NAMECN":"陆丰"
+ },
+ "陆河":{
+ "AREAID":"101282104",
+ "NAMECN":"陆河"
+ }
+ }
+ },
+ "云南":{
+ "昆明":{
+ "昆明":{
+ "AREAID":"101290101",
+ "NAMECN":"昆明"
+ },
+ "五华":{
+ "AREAID":"101290102",
+ "NAMECN":"五华"
+ },
+ "东川":{
+ "AREAID":"101290103",
+ "NAMECN":"东川"
+ },
+ "寻甸":{
+ "AREAID":"101290104",
+ "NAMECN":"寻甸"
+ },
+ "晋宁":{
+ "AREAID":"101290105",
+ "NAMECN":"晋宁"
+ },
+ "宜良":{
+ "AREAID":"101290106",
+ "NAMECN":"宜良"
+ },
+ "石林":{
+ "AREAID":"101290107",
+ "NAMECN":"石林"
+ },
+ "呈贡":{
+ "AREAID":"101290108",
+ "NAMECN":"呈贡"
+ },
+ "富民":{
+ "AREAID":"101290109",
+ "NAMECN":"富民"
+ },
+ "嵩明":{
+ "AREAID":"101290110",
+ "NAMECN":"嵩明"
+ },
+ "禄劝":{
+ "AREAID":"101290111",
+ "NAMECN":"禄劝"
+ },
+ "安宁":{
+ "AREAID":"101290112",
+ "NAMECN":"安宁"
+ },
+ "太华山":{
+ "AREAID":"101290113",
+ "NAMECN":"太华山"
+ },
+ "盘龙":{
+ "AREAID":"101290114",
+ "NAMECN":"盘龙"
+ },
+ "官渡":{
+ "AREAID":"101290115",
+ "NAMECN":"官渡"
+ },
+ "西山":{
+ "AREAID":"101290116",
+ "NAMECN":"西山"
+ }
+ },
+ "大理":{
+ "大理":{
+ "AREAID":"101290201",
+ "NAMECN":"大理"
+ },
+ "云龙":{
+ "AREAID":"101290202",
+ "NAMECN":"云龙"
+ },
+ "漾濞":{
+ "AREAID":"101290203",
+ "NAMECN":"漾濞"
+ },
+ "永平":{
+ "AREAID":"101290204",
+ "NAMECN":"永平"
+ },
+ "宾川":{
+ "AREAID":"101290205",
+ "NAMECN":"宾川"
+ },
+ "弥渡":{
+ "AREAID":"101290206",
+ "NAMECN":"弥渡"
+ },
+ "祥云":{
+ "AREAID":"101290207",
+ "NAMECN":"祥云"
+ },
+ "巍山":{
+ "AREAID":"101290208",
+ "NAMECN":"巍山"
+ },
+ "剑川":{
+ "AREAID":"101290209",
+ "NAMECN":"剑川"
+ },
+ "洱源":{
+ "AREAID":"101290210",
+ "NAMECN":"洱源"
+ },
+ "鹤庆":{
+ "AREAID":"101290211",
+ "NAMECN":"鹤庆"
+ },
+ "南涧":{
+ "AREAID":"101290212",
+ "NAMECN":"南涧"
+ }
+ },
+ "红河":{
+ "红河":{
+ "AREAID":"101290301",
+ "NAMECN":"红河"
+ },
+ "石屏":{
+ "AREAID":"101290302",
+ "NAMECN":"石屏"
+ },
+ "建水":{
+ "AREAID":"101290303",
+ "NAMECN":"建水"
+ },
+ "弥勒":{
+ "AREAID":"101290304",
+ "NAMECN":"弥勒"
+ },
+ "元阳":{
+ "AREAID":"101290305",
+ "NAMECN":"元阳"
+ },
+ "绿春":{
+ "AREAID":"101290306",
+ "NAMECN":"绿春"
+ },
+ "开远":{
+ "AREAID":"101290307",
+ "NAMECN":"开远"
+ },
+ "个旧":{
+ "AREAID":"101290308",
+ "NAMECN":"个旧"
+ },
+ "蒙自":{
+ "AREAID":"101290309",
+ "NAMECN":"蒙自"
+ },
+ "屏边":{
+ "AREAID":"101290310",
+ "NAMECN":"屏边"
+ },
+ "泸西":{
+ "AREAID":"101290311",
+ "NAMECN":"泸西"
+ },
+ "金平":{
+ "AREAID":"101290312",
+ "NAMECN":"金平"
+ },
+ "河口":{
+ "AREAID":"101290313",
+ "NAMECN":"河口"
+ }
+ },
+ "曲靖":{
+ "曲靖":{
+ "AREAID":"101290401",
+ "NAMECN":"曲靖"
+ },
+ "沾益":{
+ "AREAID":"101290402",
+ "NAMECN":"沾益"
+ },
+ "陆良":{
+ "AREAID":"101290403",
+ "NAMECN":"陆良"
+ },
+ "富源":{
+ "AREAID":"101290404",
+ "NAMECN":"富源"
+ },
+ "马龙":{
+ "AREAID":"101290405",
+ "NAMECN":"马龙"
+ },
+ "师宗":{
+ "AREAID":"101290406",
+ "NAMECN":"师宗"
+ },
+ "罗平":{
+ "AREAID":"101290407",
+ "NAMECN":"罗平"
+ },
+ "会泽":{
+ "AREAID":"101290408",
+ "NAMECN":"会泽"
+ },
+ "宣威":{
+ "AREAID":"101290409",
+ "NAMECN":"宣威"
+ },
+ "麒麟":{
+ "AREAID":"101290410",
+ "NAMECN":"麒麟"
+ }
+ },
+ "保山":{
+ "保山":{
+ "AREAID":"101290501",
+ "NAMECN":"保山"
+ },
+ "隆阳":{
+ "AREAID":"101290502",
+ "NAMECN":"隆阳"
+ },
+ "龙陵":{
+ "AREAID":"101290503",
+ "NAMECN":"龙陵"
+ },
+ "施甸":{
+ "AREAID":"101290504",
+ "NAMECN":"施甸"
+ },
+ "昌宁":{
+ "AREAID":"101290505",
+ "NAMECN":"昌宁"
+ },
+ "腾冲":{
+ "AREAID":"101290506",
+ "NAMECN":"腾冲"
+ }
+ },
+ "文山":{
+ "文山":{
+ "AREAID":"101290601",
+ "NAMECN":"文山"
+ },
+ "西畴":{
+ "AREAID":"101290602",
+ "NAMECN":"西畴"
+ },
+ "马关":{
+ "AREAID":"101290603",
+ "NAMECN":"马关"
+ },
+ "麻栗坡":{
+ "AREAID":"101290604",
+ "NAMECN":"麻栗坡"
+ },
+ "砚山":{
+ "AREAID":"101290605",
+ "NAMECN":"砚山"
+ },
+ "丘北":{
+ "AREAID":"101290606",
+ "NAMECN":"丘北"
+ },
+ "广南":{
+ "AREAID":"101290607",
+ "NAMECN":"广南"
+ },
+ "富宁":{
+ "AREAID":"101290608",
+ "NAMECN":"富宁"
+ }
+ },
+ "玉溪":{
+ "玉溪":{
+ "AREAID":"101290701",
+ "NAMECN":"玉溪"
+ },
+ "澄江":{
+ "AREAID":"101290702",
+ "NAMECN":"澄江"
+ },
+ "江川":{
+ "AREAID":"101290703",
+ "NAMECN":"江川"
+ },
+ "通海":{
+ "AREAID":"101290704",
+ "NAMECN":"通海"
+ },
+ "华宁":{
+ "AREAID":"101290705",
+ "NAMECN":"华宁"
+ },
+ "新平":{
+ "AREAID":"101290706",
+ "NAMECN":"新平"
+ },
+ "易门":{
+ "AREAID":"101290707",
+ "NAMECN":"易门"
+ },
+ "峨山":{
+ "AREAID":"101290708",
+ "NAMECN":"峨山"
+ },
+ "元江":{
+ "AREAID":"101290709",
+ "NAMECN":"元江"
+ },
+ "红塔":{
+ "AREAID":"101290710",
+ "NAMECN":"红塔"
+ }
+ },
+ "楚雄":{
+ "楚雄":{
+ "AREAID":"101290801",
+ "NAMECN":"楚雄"
+ },
+ "大姚":{
+ "AREAID":"101290802",
+ "NAMECN":"大姚"
+ },
+ "元谋":{
+ "AREAID":"101290803",
+ "NAMECN":"元谋"
+ },
+ "姚安":{
+ "AREAID":"101290804",
+ "NAMECN":"姚安"
+ },
+ "牟定":{
+ "AREAID":"101290805",
+ "NAMECN":"牟定"
+ },
+ "南华":{
+ "AREAID":"101290806",
+ "NAMECN":"南华"
+ },
+ "武定":{
+ "AREAID":"101290807",
+ "NAMECN":"武定"
+ },
+ "禄丰":{
+ "AREAID":"101290808",
+ "NAMECN":"禄丰"
+ },
+ "双柏":{
+ "AREAID":"101290809",
+ "NAMECN":"双柏"
+ },
+ "永仁":{
+ "AREAID":"101290810",
+ "NAMECN":"永仁"
+ }
+ },
+ "普洱":{
+ "普洱":{
+ "AREAID":"101290901",
+ "NAMECN":"普洱"
+ },
+ "景谷":{
+ "AREAID":"101290902",
+ "NAMECN":"景谷"
+ },
+ "景东":{
+ "AREAID":"101290903",
+ "NAMECN":"景东"
+ },
+ "澜沧":{
+ "AREAID":"101290904",
+ "NAMECN":"澜沧"
+ },
+ "思茅":{
+ "AREAID":"101290905",
+ "NAMECN":"思茅"
+ },
+ "墨江":{
+ "AREAID":"101290906",
+ "NAMECN":"墨江"
+ },
+ "江城":{
+ "AREAID":"101290907",
+ "NAMECN":"江城"
+ },
+ "孟连":{
+ "AREAID":"101290908",
+ "NAMECN":"孟连"
+ },
+ "西盟":{
+ "AREAID":"101290909",
+ "NAMECN":"西盟"
+ },
+ "镇沅":{
+ "AREAID":"101290911",
+ "NAMECN":"镇沅"
+ },
+ "宁洱":{
+ "AREAID":"101290912",
+ "NAMECN":"宁洱"
+ }
+ },
+ "昭通":{
+ "昭通":{
+ "AREAID":"101291001",
+ "NAMECN":"昭通"
+ },
+ "鲁甸":{
+ "AREAID":"101291002",
+ "NAMECN":"鲁甸"
+ },
+ "彝良":{
+ "AREAID":"101291003",
+ "NAMECN":"彝良"
+ },
+ "镇雄":{
+ "AREAID":"101291004",
+ "NAMECN":"镇雄"
+ },
+ "威信":{
+ "AREAID":"101291005",
+ "NAMECN":"威信"
+ },
+ "巧家":{
+ "AREAID":"101291006",
+ "NAMECN":"巧家"
+ },
+ "绥江":{
+ "AREAID":"101291007",
+ "NAMECN":"绥江"
+ },
+ "永善":{
+ "AREAID":"101291008",
+ "NAMECN":"永善"
+ },
+ "盐津":{
+ "AREAID":"101291009",
+ "NAMECN":"盐津"
+ },
+ "大关":{
+ "AREAID":"101291010",
+ "NAMECN":"大关"
+ },
+ "水富":{
+ "AREAID":"101291011",
+ "NAMECN":"水富"
+ },
+ "昭阳":{
+ "AREAID":"101291012",
+ "NAMECN":"昭阳"
+ }
+ },
+ "临沧":{
+ "临沧":{
+ "AREAID":"101291101",
+ "NAMECN":"临沧"
+ },
+ "沧源":{
+ "AREAID":"101291102",
+ "NAMECN":"沧源"
+ },
+ "耿马":{
+ "AREAID":"101291103",
+ "NAMECN":"耿马"
+ },
+ "双江":{
+ "AREAID":"101291104",
+ "NAMECN":"双江"
+ },
+ "凤庆":{
+ "AREAID":"101291105",
+ "NAMECN":"凤庆"
+ },
+ "永德":{
+ "AREAID":"101291106",
+ "NAMECN":"永德"
+ },
+ "云县":{
+ "AREAID":"101291107",
+ "NAMECN":"云县"
+ },
+ "镇康":{
+ "AREAID":"101291108",
+ "NAMECN":"镇康"
+ },
+ "临翔":{
+ "AREAID":"101291109",
+ "NAMECN":"临翔"
+ }
+ },
+ "怒江":{
+ "怒江":{
+ "AREAID":"101291201",
+ "NAMECN":"怒江"
+ },
+ "福贡":{
+ "AREAID":"101291203",
+ "NAMECN":"福贡"
+ },
+ "兰坪":{
+ "AREAID":"101291204",
+ "NAMECN":"兰坪"
+ },
+ "泸水":{
+ "AREAID":"101291205",
+ "NAMECN":"泸水"
+ },
+ "贡山":{
+ "AREAID":"101291207",
+ "NAMECN":"贡山"
+ }
+ },
+ "迪庆":{
+ "香格里拉":{
+ "AREAID":"101291301",
+ "NAMECN":"香格里拉"
+ },
+ "德钦":{
+ "AREAID":"101291302",
+ "NAMECN":"德钦"
+ },
+ "维西":{
+ "AREAID":"101291303",
+ "NAMECN":"维西"
+ },
+ "迪庆":{
+ "AREAID":"101291305",
+ "NAMECN":"迪庆"
+ }
+ },
+ "丽江":{
+ "丽江":{
+ "AREAID":"101291401",
+ "NAMECN":"丽江"
+ },
+ "永胜":{
+ "AREAID":"101291402",
+ "NAMECN":"永胜"
+ },
+ "华坪":{
+ "AREAID":"101291403",
+ "NAMECN":"华坪"
+ },
+ "宁蒗":{
+ "AREAID":"101291404",
+ "NAMECN":"宁蒗"
+ },
+ "古城":{
+ "AREAID":"101291405",
+ "NAMECN":"古城"
+ },
+ "玉龙":{
+ "AREAID":"101291406",
+ "NAMECN":"玉龙"
+ }
+ },
+ "德宏":{
+ "德宏":{
+ "AREAID":"101291501",
+ "NAMECN":"德宏"
+ },
+ "陇川":{
+ "AREAID":"101291503",
+ "NAMECN":"陇川"
+ },
+ "盈江":{
+ "AREAID":"101291504",
+ "NAMECN":"盈江"
+ },
+ "瑞丽":{
+ "AREAID":"101291506",
+ "NAMECN":"瑞丽"
+ },
+ "梁河":{
+ "AREAID":"101291507",
+ "NAMECN":"梁河"
+ },
+ "芒市":{
+ "AREAID":"101291508",
+ "NAMECN":"芒市"
+ }
+ },
+ "西双版纳":{
+ "景洪":{
+ "AREAID":"101291601",
+ "NAMECN":"景洪"
+ },
+ "西双版纳":{
+ "AREAID":"101291602",
+ "NAMECN":"西双版纳"
+ },
+ "勐海":{
+ "AREAID":"101291603",
+ "NAMECN":"勐海"
+ },
+ "勐腊":{
+ "AREAID":"101291605",
+ "NAMECN":"勐腊"
+ }
+ }
+ },
+ "广西":{
+ "南宁":{
+ "南宁":{
+ "AREAID":"101300101",
+ "NAMECN":"南宁"
+ },
+ "兴宁":{
+ "AREAID":"101300102",
+ "NAMECN":"兴宁"
+ },
+ "邕宁":{
+ "AREAID":"101300103",
+ "NAMECN":"邕宁"
+ },
+ "横县":{
+ "AREAID":"101300104",
+ "NAMECN":"横县"
+ },
+ "隆安":{
+ "AREAID":"101300105",
+ "NAMECN":"隆安"
+ },
+ "马山":{
+ "AREAID":"101300106",
+ "NAMECN":"马山"
+ },
+ "上林":{
+ "AREAID":"101300107",
+ "NAMECN":"上林"
+ },
+ "武鸣":{
+ "AREAID":"101300108",
+ "NAMECN":"武鸣"
+ },
+ "宾阳":{
+ "AREAID":"101300109",
+ "NAMECN":"宾阳"
+ },
+ "青秀":{
+ "AREAID":"101300110",
+ "NAMECN":"青秀"
+ },
+ "江南":{
+ "AREAID":"101300111",
+ "NAMECN":"江南"
+ },
+ "西乡塘":{
+ "AREAID":"101300112",
+ "NAMECN":"西乡塘"
+ },
+ "良庆":{
+ "AREAID":"101300113",
+ "NAMECN":"良庆"
+ }
+ },
+ "崇左":{
+ "崇左":{
+ "AREAID":"101300201",
+ "NAMECN":"崇左"
+ },
+ "天等":{
+ "AREAID":"101300202",
+ "NAMECN":"天等"
+ },
+ "龙州":{
+ "AREAID":"101300203",
+ "NAMECN":"龙州"
+ },
+ "凭祥":{
+ "AREAID":"101300204",
+ "NAMECN":"凭祥"
+ },
+ "大新":{
+ "AREAID":"101300205",
+ "NAMECN":"大新"
+ },
+ "扶绥":{
+ "AREAID":"101300206",
+ "NAMECN":"扶绥"
+ },
+ "宁明":{
+ "AREAID":"101300207",
+ "NAMECN":"宁明"
+ },
+ "江州":{
+ "AREAID":"101300208",
+ "NAMECN":"江州"
+ }
+ },
+ "柳州":{
+ "柳州":{
+ "AREAID":"101300301",
+ "NAMECN":"柳州"
+ },
+ "柳城":{
+ "AREAID":"101300302",
+ "NAMECN":"柳城"
+ },
+ "城中":{
+ "AREAID":"101300303",
+ "NAMECN":"城中"
+ },
+ "鹿寨":{
+ "AREAID":"101300304",
+ "NAMECN":"鹿寨"
+ },
+ "柳江":{
+ "AREAID":"101300305",
+ "NAMECN":"柳江"
+ },
+ "融安":{
+ "AREAID":"101300306",
+ "NAMECN":"融安"
+ },
+ "融水":{
+ "AREAID":"101300307",
+ "NAMECN":"融水"
+ },
+ "三江":{
+ "AREAID":"101300308",
+ "NAMECN":"三江"
+ },
+ "鱼峰":{
+ "AREAID":"101300309",
+ "NAMECN":"鱼峰"
+ },
+ "柳南":{
+ "AREAID":"101300310",
+ "NAMECN":"柳南"
+ },
+ "柳北":{
+ "AREAID":"101300311",
+ "NAMECN":"柳北"
+ }
+ },
+ "来宾":{
+ "来宾":{
+ "AREAID":"101300401",
+ "NAMECN":"来宾"
+ },
+ "忻城":{
+ "AREAID":"101300402",
+ "NAMECN":"忻城"
+ },
+ "金秀":{
+ "AREAID":"101300403",
+ "NAMECN":"金秀"
+ },
+ "象州":{
+ "AREAID":"101300404",
+ "NAMECN":"象州"
+ },
+ "武宣":{
+ "AREAID":"101300405",
+ "NAMECN":"武宣"
+ },
+ "合山":{
+ "AREAID":"101300406",
+ "NAMECN":"合山"
+ },
+ "兴宾":{
+ "AREAID":"101300407",
+ "NAMECN":"兴宾"
+ }
+ },
+ "桂林":{
+ "桂林":{
+ "AREAID":"101300501",
+ "NAMECN":"桂林"
+ },
+ "秀峰":{
+ "AREAID":"101300502",
+ "NAMECN":"秀峰"
+ },
+ "龙胜":{
+ "AREAID":"101300503",
+ "NAMECN":"龙胜"
+ },
+ "永福":{
+ "AREAID":"101300504",
+ "NAMECN":"永福"
+ },
+ "临桂":{
+ "AREAID":"101300505",
+ "NAMECN":"临桂"
+ },
+ "兴安":{
+ "AREAID":"101300506",
+ "NAMECN":"兴安"
+ },
+ "灵川":{
+ "AREAID":"101300507",
+ "NAMECN":"灵川"
+ },
+ "全州":{
+ "AREAID":"101300508",
+ "NAMECN":"全州"
+ },
+ "灌阳":{
+ "AREAID":"101300509",
+ "NAMECN":"灌阳"
+ },
+ "阳朔":{
+ "AREAID":"101300510",
+ "NAMECN":"阳朔"
+ },
+ "恭城":{
+ "AREAID":"101300511",
+ "NAMECN":"恭城"
+ },
+ "平乐":{
+ "AREAID":"101300512",
+ "NAMECN":"平乐"
+ },
+ "荔浦":{
+ "AREAID":"101300513",
+ "NAMECN":"荔浦"
+ },
+ "资源":{
+ "AREAID":"101300514",
+ "NAMECN":"资源"
+ },
+ "叠彩":{
+ "AREAID":"101300515",
+ "NAMECN":"叠彩"
+ },
+ "象山":{
+ "AREAID":"101300516",
+ "NAMECN":"象山"
+ },
+ "七星":{
+ "AREAID":"101300517",
+ "NAMECN":"七星"
+ },
+ "雁山":{
+ "AREAID":"101300518",
+ "NAMECN":"雁山"
+ }
+ },
+ "梧州":{
+ "梧州":{
+ "AREAID":"101300601",
+ "NAMECN":"梧州"
+ },
+ "藤县":{
+ "AREAID":"101300602",
+ "NAMECN":"藤县"
+ },
+ "万秀":{
+ "AREAID":"101300603",
+ "NAMECN":"万秀"
+ },
+ "苍梧":{
+ "AREAID":"101300604",
+ "NAMECN":"苍梧"
+ },
+ "蒙山":{
+ "AREAID":"101300605",
+ "NAMECN":"蒙山"
+ },
+ "岑溪":{
+ "AREAID":"101300606",
+ "NAMECN":"岑溪"
+ },
+ "长洲":{
+ "AREAID":"101300607",
+ "NAMECN":"长洲"
+ },
+ "龙圩":{
+ "AREAID":"101300608",
+ "NAMECN":"龙圩"
+ }
+ },
+ "贺州":{
+ "贺州":{
+ "AREAID":"101300701",
+ "NAMECN":"贺州"
+ },
+ "昭平":{
+ "AREAID":"101300702",
+ "NAMECN":"昭平"
+ },
+ "富川":{
+ "AREAID":"101300703",
+ "NAMECN":"富川"
+ },
+ "钟山":{
+ "AREAID":"101300704",
+ "NAMECN":"钟山"
+ },
+ "八步":{
+ "AREAID":"101300705",
+ "NAMECN":"八步"
+ },
+ "平桂":{
+ "AREAID":"101300706",
+ "NAMECN":"平桂"
+ }
+ },
+ "贵港":{
+ "贵港":{
+ "AREAID":"101300801",
+ "NAMECN":"贵港"
+ },
+ "桂平":{
+ "AREAID":"101300802",
+ "NAMECN":"桂平"
+ },
+ "平南":{
+ "AREAID":"101300803",
+ "NAMECN":"平南"
+ },
+ "港北":{
+ "AREAID":"101300804",
+ "NAMECN":"港北"
+ },
+ "港南":{
+ "AREAID":"101300805",
+ "NAMECN":"港南"
+ },
+ "覃塘":{
+ "AREAID":"101300806",
+ "NAMECN":"覃塘"
+ }
+ },
+ "玉林":{
+ "玉林":{
+ "AREAID":"101300901",
+ "NAMECN":"玉林"
+ },
+ "博白":{
+ "AREAID":"101300902",
+ "NAMECN":"博白"
+ },
+ "北流":{
+ "AREAID":"101300903",
+ "NAMECN":"北流"
+ },
+ "容县":{
+ "AREAID":"101300904",
+ "NAMECN":"容县"
+ },
+ "陆川":{
+ "AREAID":"101300905",
+ "NAMECN":"陆川"
+ },
+ "兴业":{
+ "AREAID":"101300906",
+ "NAMECN":"兴业"
+ },
+ "玉州":{
+ "AREAID":"101300907",
+ "NAMECN":"玉州"
+ },
+ "福绵":{
+ "AREAID":"101300908",
+ "NAMECN":"福绵"
+ }
+ },
+ "百色":{
+ "百色":{
+ "AREAID":"101301001",
+ "NAMECN":"百色"
+ },
+ "那坡":{
+ "AREAID":"101301002",
+ "NAMECN":"那坡"
+ },
+ "田阳":{
+ "AREAID":"101301003",
+ "NAMECN":"田阳"
+ },
+ "德保":{
+ "AREAID":"101301004",
+ "NAMECN":"德保"
+ },
+ "靖西":{
+ "AREAID":"101301005",
+ "NAMECN":"靖西"
+ },
+ "田东":{
+ "AREAID":"101301006",
+ "NAMECN":"田东"
+ },
+ "平果":{
+ "AREAID":"101301007",
+ "NAMECN":"平果"
+ },
+ "隆林":{
+ "AREAID":"101301008",
+ "NAMECN":"隆林"
+ },
+ "西林":{
+ "AREAID":"101301009",
+ "NAMECN":"西林"
+ },
+ "乐业":{
+ "AREAID":"101301010",
+ "NAMECN":"乐业"
+ },
+ "凌云":{
+ "AREAID":"101301011",
+ "NAMECN":"凌云"
+ },
+ "田林":{
+ "AREAID":"101301012",
+ "NAMECN":"田林"
+ },
+ "右江":{
+ "AREAID":"101301013",
+ "NAMECN":"右江"
+ }
+ },
+ "钦州":{
+ "钦州":{
+ "AREAID":"101301101",
+ "NAMECN":"钦州"
+ },
+ "浦北":{
+ "AREAID":"101301102",
+ "NAMECN":"浦北"
+ },
+ "灵山":{
+ "AREAID":"101301103",
+ "NAMECN":"灵山"
+ },
+ "钦南":{
+ "AREAID":"101301104",
+ "NAMECN":"钦南"
+ },
+ "钦北":{
+ "AREAID":"101301105",
+ "NAMECN":"钦北"
+ }
+ },
+ "河池":{
+ "河池":{
+ "AREAID":"101301201",
+ "NAMECN":"河池"
+ },
+ "天峨":{
+ "AREAID":"101301202",
+ "NAMECN":"天峨"
+ },
+ "东兰":{
+ "AREAID":"101301203",
+ "NAMECN":"东兰"
+ },
+ "巴马":{
+ "AREAID":"101301204",
+ "NAMECN":"巴马"
+ },
+ "环江":{
+ "AREAID":"101301205",
+ "NAMECN":"环江"
+ },
+ "罗城":{
+ "AREAID":"101301206",
+ "NAMECN":"罗城"
+ },
+ "宜州":{
+ "AREAID":"101301207",
+ "NAMECN":"宜州"
+ },
+ "凤山":{
+ "AREAID":"101301208",
+ "NAMECN":"凤山"
+ },
+ "南丹":{
+ "AREAID":"101301209",
+ "NAMECN":"南丹"
+ },
+ "都安":{
+ "AREAID":"101301210",
+ "NAMECN":"都安"
+ },
+ "大化":{
+ "AREAID":"101301211",
+ "NAMECN":"大化"
+ },
+ "金城江":{
+ "AREAID":"101301212",
+ "NAMECN":"金城江"
+ }
+ },
+ "北海":{
+ "北海":{
+ "AREAID":"101301301",
+ "NAMECN":"北海"
+ },
+ "合浦":{
+ "AREAID":"101301302",
+ "NAMECN":"合浦"
+ },
+ "涠洲岛":{
+ "AREAID":"101301303",
+ "NAMECN":"涠洲岛"
+ },
+ "海城":{
+ "AREAID":"101301304",
+ "NAMECN":"海城"
+ },
+ "银海":{
+ "AREAID":"101301305",
+ "NAMECN":"银海"
+ },
+ "铁山港":{
+ "AREAID":"101301306",
+ "NAMECN":"铁山港"
+ }
+ },
+ "防城港":{
+ "防城港":{
+ "AREAID":"101301401",
+ "NAMECN":"防城港"
+ },
+ "上思":{
+ "AREAID":"101301402",
+ "NAMECN":"上思"
+ },
+ "东兴":{
+ "AREAID":"101301403",
+ "NAMECN":"东兴"
+ },
+ "港口":{
+ "AREAID":"101301404",
+ "NAMECN":"港口"
+ },
+ "防城":{
+ "AREAID":"101301405",
+ "NAMECN":"防城"
+ }
+ }
+ },
+ "海南":{
+ "海口":{
+ "海口":{
+ "AREAID":"101310101",
+ "NAMECN":"海口"
+ },
+ "秀英":{
+ "AREAID":"101310102",
+ "NAMECN":"秀英"
+ },
+ "龙华":{
+ "AREAID":"101310103",
+ "NAMECN":"龙华"
+ },
+ "琼山":{
+ "AREAID":"101310104",
+ "NAMECN":"琼山"
+ },
+ "美兰":{
+ "AREAID":"101310105",
+ "NAMECN":"美兰"
+ }
+ },
+ "三亚":{
+ "三亚":{
+ "AREAID":"101310201",
+ "NAMECN":"三亚"
+ },
+ "海棠":{
+ "AREAID":"101310213",
+ "NAMECN":"海棠"
+ },
+ "吉阳":{
+ "AREAID":"101310218",
+ "NAMECN":"吉阳"
+ },
+ "天涯":{
+ "AREAID":"101310219",
+ "NAMECN":"天涯"
+ },
+ "崖州":{
+ "AREAID":"101310223",
+ "NAMECN":"崖州"
+ }
+ },
+ "东方":{
+ "东方":{
+ "AREAID":"101310202",
+ "NAMECN":"东方"
+ }
+ },
+ "临高":{
+ "临高":{
+ "AREAID":"101310203",
+ "NAMECN":"临高"
+ }
+ },
+ "澄迈":{
+ "澄迈":{
+ "AREAID":"101310204",
+ "NAMECN":"澄迈"
+ }
+ },
+ "儋州":{
+ "儋州":{
+ "AREAID":"101310205",
+ "NAMECN":"儋州"
+ }
+ },
+ "昌江":{
+ "昌江":{
+ "AREAID":"101310206",
+ "NAMECN":"昌江"
+ }
+ },
+ "白沙":{
+ "白沙":{
+ "AREAID":"101310207",
+ "NAMECN":"白沙"
+ }
+ },
+ "琼中":{
+ "琼中":{
+ "AREAID":"101310208",
+ "NAMECN":"琼中"
+ }
+ },
+ "定安":{
+ "定安":{
+ "AREAID":"101310209",
+ "NAMECN":"定安"
+ }
+ },
+ "屯昌":{
+ "屯昌":{
+ "AREAID":"101310210",
+ "NAMECN":"屯昌"
+ }
+ },
+ "琼海":{
+ "琼海":{
+ "AREAID":"101310211",
+ "NAMECN":"琼海"
+ }
+ },
+ "文昌":{
+ "文昌":{
+ "AREAID":"101310212",
+ "NAMECN":"文昌"
+ }
+ },
+ "保亭":{
+ "保亭":{
+ "AREAID":"101310214",
+ "NAMECN":"保亭"
+ }
+ },
+ "万宁":{
+ "万宁":{
+ "AREAID":"101310215",
+ "NAMECN":"万宁"
+ }
+ },
+ "陵水":{
+ "陵水":{
+ "AREAID":"101310216",
+ "NAMECN":"陵水"
+ }
+ },
+ "乐东":{
+ "乐东":{
+ "AREAID":"101310221",
+ "NAMECN":"乐东"
+ }
+ },
+ "五指山":{
+ "五指山":{
+ "AREAID":"101310222",
+ "NAMECN":"五指山"
+ }
+ },
+ "三沙":{
+ "三沙":{
+ "AREAID":"101310301",
+ "NAMECN":"三沙"
+ },
+ "西沙":{
+ "AREAID":"101310302",
+ "NAMECN":"西沙"
+ },
+ "中沙":{
+ "AREAID":"101310303",
+ "NAMECN":"中沙"
+ },
+ "南沙":{
+ "AREAID":"101310304",
+ "NAMECN":"南沙"
+ },
+ "黄岩岛":{
+ "AREAID":"101310305",
+ "NAMECN":"黄岩岛"
+ }
+ }
+ },
+ "香港":{
+ "香港":{
+ "香港":{
+ "AREAID":"101320101",
+ "NAMECN":"香港"
+ },
+ "九龙":{
+ "AREAID":"101320102",
+ "NAMECN":"九龙"
+ },
+ "新界":{
+ "AREAID":"101320103",
+ "NAMECN":"新界"
+ }
+ }
+ },
+ "澳门":{
+ "澳门":{
+ "澳门":{
+ "AREAID":"101330101",
+ "NAMECN":"澳门"
+ },
+ "氹仔岛":{
+ "AREAID":"101330102",
+ "NAMECN":"氹仔岛"
+ },
+ "路环岛":{
+ "AREAID":"101330103",
+ "NAMECN":"路环岛"
+ }
+ }
+ },
+ "台湾":{
+ "台北":{
+ "台北":{
+ "AREAID":"101340101",
+ "NAMECN":"台北"
+ },
+ "桃园":{
+ "AREAID":"101340102",
+ "NAMECN":"桃园"
+ },
+ "新竹":{
+ "AREAID":"101340103",
+ "NAMECN":"新竹"
+ },
+ "宜兰":{
+ "AREAID":"101340104",
+ "NAMECN":"宜兰"
+ }
+ },
+ "高雄":{
+ "高雄":{
+ "AREAID":"101340201",
+ "NAMECN":"高雄"
+ },
+ "嘉义":{
+ "AREAID":"101340202",
+ "NAMECN":"嘉义"
+ },
+ "台南":{
+ "AREAID":"101340203",
+ "NAMECN":"台南"
+ },
+ "台东":{
+ "AREAID":"101340204",
+ "NAMECN":"台东"
+ },
+ "屏东":{
+ "AREAID":"101340205",
+ "NAMECN":"屏东"
+ }
+ },
+ "台中":{
+ "台中":{
+ "AREAID":"101340401",
+ "NAMECN":"台中"
+ },
+ "苗栗":{
+ "AREAID":"101340402",
+ "NAMECN":"苗栗"
+ },
+ "彰化":{
+ "AREAID":"101340403",
+ "NAMECN":"彰化"
+ },
+ "南投":{
+ "AREAID":"101340404",
+ "NAMECN":"南投"
+ },
+ "花莲":{
+ "AREAID":"101340405",
+ "NAMECN":"花莲"
+ },
+ "云林":{
+ "AREAID":"101340406",
+ "NAMECN":"云林"
+ }
+ }
+ }
+}
diff --git a/docs/json/file_extension.json b/docs/json/file_extension.json
new file mode 100644
index 0000000..287bc03
--- /dev/null
+++ b/docs/json/file_extension.json
@@ -0,0 +1,328 @@
+{
+ ".001": "application/x-001",
+ ".301": "application/x-301",
+ ".323": "text/h323",
+ ".906": "application/x-906",
+ ".907": "drawing/907",
+ ".a11": "application/x-a11",
+ ".acp": "audio/x-mei-aac",
+ ".ai": "application/postscript",
+ ".aif": "audio/aiff",
+ ".aifc": "audio/aiff",
+ ".aiff": "audio/aiff",
+ ".anv": "application/x-anv",
+ ".asa": "text/asa",
+ ".asf": "video/x-ms-asf",
+ ".asp": "text/asp",
+ ".asx": "video/x-ms-asf",
+ ".au": "audio/basic",
+ ".avi": "video/avi",
+ ".awf": "application/vnd.adobe.workflow",
+ ".biz": "text/xml",
+ ".bmp": "application/x-bmp",
+ ".bot": "application/x-bot",
+ ".c4t": "application/x-c4t",
+ ".c90": "application/x-c90",
+ ".cal": "application/x-cals",
+ ".cat": "application/vnd.ms-pki.seccat",
+ ".cdf": "application/x-netcdf",
+ ".cdr": "application/x-cdr",
+ ".cel": "application/x-cel",
+ ".cer": "application/x-x509-ca-cert",
+ ".cg4": "application/x-g4",
+ ".cgm": "application/x-cgm",
+ ".cit": "application/x-cit",
+ ".class": "java/*",
+ ".cml": "text/xml",
+ ".cmp": "application/x-cmp",
+ ".cmx": "application/x-cmx",
+ ".cot": "application/x-cot",
+ ".crl": "application/pkix-crl",
+ ".crt": "application/x-x509-ca-cert",
+ ".csi": "application/x-csi",
+ ".css": "text/css",
+ ".cut": "application/x-cut",
+ ".dbf": "application/x-dbf",
+ ".dbm": "application/x-dbm",
+ ".dbx": "application/x-dbx",
+ ".dcd": "text/xml",
+ ".dcx": "application/x-dcx",
+ ".der": "application/x-x509-ca-cert",
+ ".dgn": "application/x-dgn",
+ ".dib": "application/x-dib",
+ ".dll": "application/x-msdownload",
+ ".doc": "application/msword",
+ ".dot": "application/msword",
+ ".drw": "application/x-drw",
+ ".dtd": "text/xml",
+ ".dwf": "Model/vnd.dwf",
+ ".dwg": "application/x-dwg",
+ ".dxb": "application/x-dxb",
+ ".dxf": "application/x-dxf",
+ ".edn": "application/vnd.adobe.edn",
+ ".emf": "application/x-emf",
+ ".eml": "message/rfc822",
+ ".ent": "text/xml",
+ ".epi": "application/x-epi",
+ ".eps": "application/postscript",
+ ".etd": "application/x-ebx",
+ ".exe": "application/x-msdownload",
+ ".fax": "image/fax",
+ ".fdf": "application/vnd.fdf",
+ ".fif": "application/fractals",
+ ".fo": "text/xml",
+ ".frm": "application/x-frm",
+ ".g4": "application/x-g4",
+ ".gbr": "application/x-gbr",
+ ".gif": "image/gif",
+ ".gl2": "application/x-gl2",
+ ".gp4": "application/x-gp4",
+ ".hgl": "application/x-hgl",
+ ".hmr": "application/x-hmr",
+ ".hpg": "application/x-hpgl",
+ ".hpl": "application/x-hpl",
+ ".hqx": "application/mac-binhex40",
+ ".hrf": "application/x-hrf",
+ ".hta": "application/hta",
+ ".htc": "text/x-component",
+ ".htm": "text/html",
+ ".html": "text/html",
+ ".htt": "text/webviewhtml",
+ ".htx": "text/html",
+ ".icb": "application/x-icb",
+ ".ico": "image/x-icon",
+ ".iff": "application/x-iff",
+ ".ig4": "application/x-g4",
+ ".igs": "application/x-igs",
+ ".iii": "application/x-iphone",
+ ".img": "application/x-img",
+ ".ins": "application/x-internet-signup",
+ ".isp": "application/x-internet-signup",
+ ".IVF": "video/x-ivf",
+ ".java": "java/*",
+ ".jfif": "image/jpeg",
+ ".jpe": "image/jpeg",
+ ".jpeg": "image/jpeg",
+ ".jpg": "image/jpeg",
+ ".js": "application/x-javascript",
+ ".jsp": "text/html",
+ ".la1": "audio/x-liquid-file",
+ ".lar": "application/x-laplayer-reg",
+ ".latex": "application/x-latex",
+ ".lavs": "audio/x-liquid-secure",
+ ".lbm": "application/x-lbm",
+ ".lmsff": "audio/x-la-lms",
+ ".ls": "application/x-javascript",
+ ".ltr": "application/x-ltr",
+ ".m1v": "video/x-mpeg",
+ ".m2v": "video/x-mpeg",
+ ".m3u": "audio/mpegurl",
+ ".m4e": "video/mpeg4",
+ ".mac": "application/x-mac",
+ ".man": "application/x-troff-man",
+ ".math": "text/xml",
+ ".mdb": "application/msaccess",
+ ".mfp": "application/x-shockwave-flash",
+ ".mht": "message/rfc822",
+ ".mhtml": "message/rfc822",
+ ".mi": "application/x-mi",
+ ".mid": "audio/mid",
+ ".midi": "audio/mid",
+ ".mil": "application/x-mil",
+ ".mml": "text/xml",
+ ".mnd": "audio/x-musicnet-download",
+ ".mns": "audio/x-musicnet-stream",
+ ".mocha": "application/x-javascript",
+ ".movie": "video/x-sgi-movie",
+ ".mp1": "audio/mp1",
+ ".mp2": "audio/mp2",
+ ".mp2v": "video/mpeg",
+ ".mp3": "audio/mp3",
+ ".mp4": "video/mpeg4",
+ ".mpa": "video/x-mpg",
+ ".mpd": "application/vnd.ms-project",
+ ".mpe": "video/x-mpeg",
+ ".mpeg": "video/mpg",
+ ".mpg": "video/mpg",
+ ".mpga": "audio/rn-mpeg",
+ ".mpp": "application/vnd.ms-project",
+ ".mps": "video/x-mpeg",
+ ".mpt": "application/vnd.ms-project",
+ ".mpv": "video/mpg",
+ ".mpv2": "video/mpeg",
+ ".mpw": "application/vnd.ms-project",
+ ".mpx": "application/vnd.ms-project",
+ ".mtx": "text/xml",
+ ".mxp": "application/x-mmxp",
+ ".net": "image/pnetvue",
+ ".nrf": "application/x-nrf",
+ ".nws": "message/rfc822",
+ ".odc": "text/x-ms-odc",
+ ".out": "application/x-out",
+ ".p10": "application/pkcs10",
+ ".p12": "application/x-pkcs12",
+ ".p7b": "application/x-pkcs7-certificates",
+ ".p7c": "application/pkcs7-mime",
+ ".p7m": "application/pkcs7-mime",
+ ".p7r": "application/x-pkcs7-certreqresp",
+ ".p7s": "application/pkcs7-signature",
+ ".pc5": "application/x-pc5",
+ ".pci": "application/x-pci",
+ ".pcl": "application/x-pcl",
+ ".pcx": "application/x-pcx",
+ ".pdf": "application/pdf",
+ ".pdx": "application/vnd.adobe.pdx",
+ ".pfx": "application/x-pkcs12",
+ ".pgl": "application/x-pgl",
+ ".pic": "application/x-pic",
+ ".pko": "application/vnd.ms-pki.pko",
+ ".pl": "application/x-perl",
+ ".plg": "text/html",
+ ".pls": "audio/scpls",
+ ".plt": "application/x-plt",
+ ".png": "image/png",
+ ".pot": "application/vnd.ms-powerpoint",
+ ".ppa": "application/vnd.ms-powerpoint",
+ ".ppm": "application/x-ppm",
+ ".pps": "application/vnd.ms-powerpoint",
+ ".ppt": "application/x-ppt",
+ ".pr": "application/x-pr",
+ ".prf": "application/pics-rules",
+ ".prn": "application/x-prn",
+ ".prt": "application/x-prt",
+ ".ps": "application/x-ps",
+ ".ptn": "application/x-ptn",
+ ".pwz": "application/vnd.ms-powerpoint",
+ ".r3t": "text/vnd.rn-realtext3d",
+ ".ra": "audio/vnd.rn-realaudio",
+ ".ram": "audio/x-pn-realaudio",
+ ".ras": "application/x-ras",
+ ".rat": "application/rat-file",
+ ".rdf": "text/xml",
+ ".rec": "application/vnd.rn-recording",
+ ".red": "application/x-red",
+ ".rgb": "application/x-rgb",
+ ".rjs": "application/vnd.rn-realsystem-rjs",
+ ".rjt": "application/vnd.rn-realsystem-rjt",
+ ".rlc": "application/x-rlc",
+ ".rle": "application/x-rle",
+ ".rm": "application/vnd.rn-realmedia",
+ ".rmf": "application/vnd.adobe.rmf",
+ ".rmi": "audio/mid",
+ ".rmj": "application/vnd.rn-realsystem-rmj",
+ ".rmm": "audio/x-pn-realaudio",
+ ".rmp": "application/vnd.rn-rn_music_package",
+ ".rms": "application/vnd.rn-realmedia-secure",
+ ".rmvb": "application/vnd.rn-realmedia-vbr",
+ ".rmx": "application/vnd.rn-realsystem-rmx",
+ ".rnx": "application/vnd.rn-realplayer",
+ ".rp": "image/vnd.rn-realpix",
+ ".rpm": "audio/x-pn-realaudio-plugin",
+ ".rsml": "application/vnd.rn-rsml",
+ ".rt": "text/vnd.rn-realtext",
+ ".rtf": "application/x-rtf",
+ ".rv": "video/vnd.rn-realvideo",
+ ".sam": "application/x-sam",
+ ".sat": "application/x-sat",
+ ".sdp": "application/sdp",
+ ".sdw": "application/x-sdw",
+ ".sit": "application/x-stuffit",
+ ".slb": "application/x-slb",
+ ".sld": "application/x-sld",
+ ".slk": "drawing/x-slk",
+ ".smi": "application/smil",
+ ".smil": "application/smil",
+ ".smk": "application/x-smk",
+ ".snd": "audio/basic",
+ ".sol": "text/plain",
+ ".sor": "text/plain",
+ ".spc": "application/x-pkcs7-certificates",
+ ".spl": "application/futuresplash",
+ ".spp": "text/xml",
+ ".ssm": "application/streamingmedia",
+ ".sst": "application/vnd.ms-pki.certstore",
+ ".stl": "application/vnd.ms-pki.stl",
+ ".stm": "text/html",
+ ".sty": "application/x-sty",
+ ".svg": "text/xml",
+ ".swf": "application/x-shockwave-flash",
+ ".tdf": "application/x-tdf",
+ ".tg4": "application/x-tg4",
+ ".tga": "application/x-tga",
+ ".tif": "image/tiff",
+ ".tiff": "image/tiff",
+ ".tld": "text/xml",
+ ".top": "drawing/x-top",
+ ".torrent": "application/x-bittorrent",
+ ".tsd": "text/xml",
+ ".txt": "text/plain",
+ ".uin": "application/x-icq",
+ ".uls": "text/iuls",
+ ".vcf": "text/x-vcard",
+ ".vda": "application/x-vda",
+ ".vdx": "application/vnd.visio",
+ ".vml": "text/xml",
+ ".vpg": "application/x-vpeg005",
+ ".vsd": "application/vnd.visio",
+ ".vss": "application/vnd.visio",
+ ".vst": "application/vnd.visio",
+ ".vsw": "application/vnd.visio",
+ ".vsx": "application/vnd.visio",
+ ".vtx": "application/vnd.visio",
+ ".vxml": "text/xml",
+ ".wav": "audio/wav",
+ ".wax": "audio/x-ms-wax",
+ ".wb1": "application/x-wb1",
+ ".wb2": "application/x-wb2",
+ ".wb3": "application/x-wb3",
+ ".wbmp": "image/vnd.wap.wbmp",
+ ".wiz": "application/msword",
+ ".wk3": "application/x-wk3",
+ ".wk4": "application/x-wk4",
+ ".wkq": "application/x-wkq",
+ ".wks": "application/x-wks",
+ ".wm": "video/x-ms-wm",
+ ".wma": "audio/x-ms-wma",
+ ".wmd": "application/x-ms-wmd",
+ ".wmf": "application/x-wmf",
+ ".wml": "text/vnd.wap.wml",
+ ".wmv": "video/x-ms-wmv",
+ ".wmx": "video/x-ms-wmx",
+ ".wmz": "application/x-ms-wmz",
+ ".wp6": "application/x-wp6",
+ ".wpd": "application/x-wpd",
+ ".wpg": "application/x-wpg",
+ ".wpl": "application/vnd.ms-wpl",
+ ".wq1": "application/x-wq1",
+ ".wr1": "application/x-wr1",
+ ".wri": "application/x-wri",
+ ".wrk": "application/x-wrk",
+ ".ws": "application/x-ws",
+ ".ws2": "application/x-ws",
+ ".wsc": "text/scriptlet",
+ ".wsdl": "text/xml",
+ ".wvx": "video/x-ms-wvx",
+ ".xdp": "application/vnd.adobe.xdp",
+ ".xdr": "text/xml",
+ ".xfd": "application/vnd.adobe.xfd",
+ ".xfdf": "application/vnd.adobe.xfdf",
+ ".xhtml": "text/html",
+ ".xls": "application/vnd.ms-excel",
+ ".xlw": "application/x-xlw",
+ ".xml": "text/xml",
+ ".xpl": "audio/scpls",
+ ".xq": "text/xml",
+ ".xql": "text/xml",
+ ".xquery": "text/xml",
+ ".xsd": "text/xml",
+ ".xsl": "text/xml",
+ ".xslt": "text/xml",
+ ".xwd": "application/x-xwd",
+ ".x_b": "application/x-x_b",
+ ".sis": "application/vnd.symbian.install",
+ ".sisx": "application/vnd.symbian.install",
+ ".x_t": "application/x-x_t",
+ ".ipa": "application/vnd.iphone",
+ ".apk": "application/vnd.android.package-archive",
+ ".xap": "application/x-silverlight-app"
+}
diff --git a/extension/agent/learner.py b/extension/agent/learner.py
new file mode 100644
index 0000000..b0718d2
--- /dev/null
+++ b/extension/agent/learner.py
@@ -0,0 +1,70 @@
+# -*- coding: UTF-8 -*-
+from urllib.parse import quote
+
+from core.model import get_chat_model
+from function.web_tool import WebScraper
+from extension.rag import RAGPipeline
+
+# Initialize the agent components
+coder_instance = get_chat_model("qwen2.5-coder:14b")
+llm_instance = get_chat_model("deepseek-r1:14b")
+
+rag_pipeline = RAGPipeline(table_name="learner_knowledge")
+
+web_scraper = WebScraper()
+
+
+def learn_from_web(urls):
+ result = web_scraper.search(urls)
+ rag_pipeline.insert_text_content(result['data'])
+
+
+def query_agent(question):
+ response = rag_pipeline.query(question)
+ return response
+
+
+def get_relevant_content(url: str, tasks: list[str]) -> list:
+ list_result = []
+ query_result = web_scraper.search(url)
+ list_result.append(query_result['data'])
+ for task in tasks:
+ llm_result = llm_instance.llm(f"{query_result['data']}\n{task}")
+ list_result.append(llm_result)
+ return list_result
+
+
+# Example usage
+if __name__ == "__main__":
+ topic = "fastgpt"
+
+ # bing 一级索引
+ bing_url = f"https://cn.bing.com/search?q={quote(topic)}"
+ task_1 = f"找到{topic}相关的知识的网址,只输出网址地址列表"
+ # task_2 = f"找到{topic}相关的知识的,输出整理好的内容,尽可能多的保留原文"
+ first_result, first_urls = get_relevant_content(bing_url, [task_1])
+ print(first_urls)
+
+ # 对一级索引的网址进行爬取,获取二级索引地址,获得的内容进行总结
+ web_urls = web_scraper.split_urls(first_urls)
+ print(len(web_urls))
+ second_urls = ""
+ for url in web_urls:
+ temp_result, temp_urls = get_relevant_content(url, [task_1])
+ print(first_urls)
+ rag_pipeline.insert_text_content(temp_result, url)
+ second_urls += temp_urls + "\n"
+
+ web_urls = web_scraper.split_urls(second_urls)
+ print(len(web_urls))
+ for url in web_urls:
+ temp_result = get_relevant_content(url, [])[0]
+ print(first_urls)
+ rag_pipeline.insert_text_content(temp_result, url)
+
+ # 第二级索引的网址获得的内容进行总结
+
+ question = f"{topic}的技术架构是什么?"
+ answer = query_agent(question)
+ print(answer)
+ print("Agent believes it has learned enough.")
diff --git a/extension/chat.py b/extension/chat.py
new file mode 100644
index 0000000..c22b951
--- /dev/null
+++ b/extension/chat.py
@@ -0,0 +1,123 @@
+from extension.rag import rag_pipline
+from core.model import run_llm_by_message
+from core.types import BaseEngine
+from extension.mcp import mcp_engine
+from extension.standard import chat_file_manager, run_llm_by_template
+
+
+class ChatEngine(BaseEngine):
+ def __init__(self):
+ super().__init__("chat_engine")
+ self.dialogue = []
+ self.file = {}
+ self._rag = rag_pipline
+ self._body = None
+
+ @property
+ def context(self):
+ contexts = self.dialogue[-16:] if len(self.dialogue) > 16 else self.dialogue
+ return "\n##\n\n".join([msg["role"]+": "+msg["message"] for msg in contexts])
+
+ def set_body(self, body):
+ self._body = body
+
+ def load_chat_history(self, chat_history):
+ self.dialogue = []
+ self.file.clear()
+ for msg in chat_history:
+ if msg["role"] in ["user", "system", "external"]:
+ self.dialogue.append(msg)
+ elif msg["role"] == "uploader":
+ file_id, _ = chat_file_manager.parse_file_id(msg["message"])
+ self.file["uploader"] = file_id
+ elif msg["role"] == "sender":
+ self.file["sender"] = msg["message"]
+
+ def add_message(self, message: str, role: str):
+ self.dialogue.append({"role": role, "message": message})
+
+ def add_user_message(self, message: str):
+ self.add_message(message, "user")
+
+ def add_system_message(self, message: str):
+ self.add_message(message, "system")
+
+ def load_file(self, message: str):
+ try:
+ file_id, ext = chat_file_manager.parse_file_id(message)
+ self._rag.insert_document(file_id, file_id, ext)
+ self.file["uploader"] = file_id
+ return {"message": "文件上传成功!请继续提问。", "role": "system"}
+ except Exception as e:
+ return {"message": "文件上传失败!请联系管理员。", "role": "system"}
+
+ def run(self, message: str, file_name=None, plugin_type=None) -> dict:
+ current_context = self.context
+ self.add_user_message(message)
+ mcp_engine.set_context(current_context)
+ mcp_engine.set_file(self.file.get("uploader"))
+
+ try:
+ mcp_data = mcp_engine.run(message)
+ action = mcp_data["tool"]
+ if action == "answer":
+ data = mcp_data.get("data", "")
+ if not data:
+ data = self._generate_chat(message, current_context, "")["data"]
+ return self._chat(data)
+ print(mcp_data)
+ external_data = mcp_data.get("data", "")
+ generate_data = self._generate_chat(message, current_context, external_data)
+ return self._data_parse(generate_data)
+
+ except Exception as e:
+ return {"message": f"处理错误: {str(e)}", "role": "system"}
+
+ def _chat(self, answer: str):
+ self.add_system_message(answer)
+ return {"message": answer, "role": "system"}
+
+ @staticmethod
+ def _generate_chat(message: str, memory: str, external: str):
+ context = ""
+ if memory:
+ context += f"{memory}\n"
+ if external:
+ context += f"{external}\n"
+ context += f"{message}"
+ result = run_llm_by_template(context,"text_generate")
+ print(result)
+ return {"type": "text", "data": result }
+
+ def _data_parse(self, data: dict) -> dict:
+ if data["type"] == "text":
+ self.add_system_message(data["data"])
+ return {"message": data["data"], "role": "system"}
+ elif data["type"] == "file":
+ self.file["sender"] = data["data"]
+ return {"message": data["data"], "role": "sender"}
+ else:
+ raise ValueError("Unsupported data type")
+
+
+class ModelManager:
+ def __init__(self):
+ self.allow_list = []
+
+ def chat(self, message: str, message_type: str = "text", chat_history=None):
+ ce = ChatEngine()
+ ce.set_allow_list(self.allow_list)
+ ce.load_chat_history(chat_history if chat_history else [])
+ if message_type == "text":
+ return ce.run(message)
+ elif message_type == "file":
+ return ce.load_file(message)
+ else:
+ raise Exception("Message type not supported!")
+
+ @staticmethod
+ def generate(prompt):
+ return run_llm_by_message(prompt)
+
+
+model_manager = ModelManager()
diff --git a/extension/document_loader.py b/extension/document_loader.py
new file mode 100644
index 0000000..9d5806e
--- /dev/null
+++ b/extension/document_loader.py
@@ -0,0 +1,70 @@
+from langchain_community.document_loaders import PyPDFLoader, TextLoader, Docx2txtLoader
+from langchain_text_splitters import RecursiveCharacterTextSplitter
+from core.model import vision_instance
+from core.types import BaseLoader
+
+
+
+
+class ImageLoader:
+ def __init__(self, file_path: str):
+ self.file_path = file_path
+
+ def load(self):
+ from langchain.schema import Document
+
+ with open(self.file_path, "rb") as f:
+ image_data = f.read()
+
+ vision_instance.load_image(image_data)
+ description = vision_instance.describe()
+
+ return [Document(
+ page_content=description,
+ metadata={"source": self.file_path}
+ )]
+
+
+class DocumentLoader(BaseLoader):
+ SUPPORTED_LOADERS = {
+ ".pdf": PyPDFLoader,
+ ".txt": TextLoader,
+ ".docx": Docx2txtLoader,
+ ".doc": Docx2txtLoader,
+ ".jpeg": ImageLoader,
+ ".jpg": ImageLoader,
+ ".png": ImageLoader
+ }
+
+ def __init__(self, config=None):
+ super().__init__()
+ config = config or {}
+ self.file_path = None
+ self.extension = None
+ self._document = None
+ self.chunk_size = config.get("chunk_size", 512)
+ self.chunk_overlap = config.get("chunk_overlap", 200)
+ self.text_splitter = RecursiveCharacterTextSplitter(
+ chunk_size=self.chunk_size,
+ chunk_overlap=self.chunk_overlap,
+ )
+
+ @property
+ def loader(self):
+ if self.extension not in self.SUPPORTED_LOADERS:
+ raise ValueError(f"不支持的文件类型: {self.extension}")
+ return self.SUPPORTED_LOADERS[self.extension](self.file_path)
+
+ def load_and_split(self):
+ return self.text_splitter.split_documents(self._document)
+
+ def load_content(self, file_path,extension=None):
+ self.extension = extension if extension else ""
+ self.file_path = "./docs/files/" + file_path
+ with open(self.file_path, "rb") as f:
+ self.content = f.read()
+
+ self._document = self.loader.load()
+
+ def split_text(self, content: str) -> list[str]:
+ return self.text_splitter.split_text(content)
diff --git a/extension/mcp.py b/extension/mcp.py
new file mode 100644
index 0000000..f62001b
--- /dev/null
+++ b/extension/mcp.py
@@ -0,0 +1,444 @@
+import json
+
+from typing import Dict, List, Optional
+from dataclasses import dataclass
+from abc import ABC, abstractmethod
+from urllib.parse import quote
+
+import requests
+from core.config import conf
+from core.model import run_llm_by_message, think_by_message
+from core.types import BaseCRUD, BaseEngine
+from extension.standard import parse_json_string, OnlinePrompt, db_manager
+from function.context import rag_search
+from function.weather import weather_search
+from function.web_tool import web_scraper
+
+
+class ProtocolAdapter(ABC):
+ name: str
+
+ @property
+ @abstractmethod
+ def name(self):
+ pass
+
+ @abstractmethod
+ def handle_request(self, request: dict) -> dict:
+ pass
+
+ def request(self, request: dict) -> str:
+ result = self.handle_request(request)
+ if result["status"] == 500:
+ return ""
+ else:
+ return result["message"]
+
+
+class HttpProtocolAdapter(ProtocolAdapter):
+ def __init__(self, secure: bool = False):
+ self.secure = secure
+ self.headers = {
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 Edg/133.0.0.0",
+ "Accept": "*/*",
+ "Connection": "keep-alive"
+ }
+
+ @property
+ def name(self):
+ return 'https' if self.secure else 'http'
+
+ def handle_request(self, request: dict) -> dict:
+ method = request['method']
+ uri = f"{self.name}://{request['uri']}"
+ try:
+ if method == 'get':
+ params = request['parameters']
+ uri += f"?{'&'.join([f'{k}={quote(str(v))}' for k, v in params.items()])}"
+ return {"message": web_scraper.get_uri_resource(uri), "status": 200}
+ elif method == 'post':
+ data = requests.post(uri, json=request['parameters'], headers=self.headers).json()
+ return {'status': 200, 'message': str(data)}
+ else:
+ return {"status": 500, "message": f"Unsupported method: {method}"}
+ except Exception as e:
+ return {"status": 500, "message": str(e)}
+
+
+class LocalProtocolAdapter(ProtocolAdapter):
+ @property
+ def name(self):
+ return "local"
+
+ def handle_request(self, request: dict) -> dict:
+ return {"status": "success", "message": "Local request handled successfully"}
+
+
+@dataclass
+class MCPService:
+ instance_name: str
+ name: str
+ endpoint: str
+ id: int = -1
+ protocol: Optional[ProtocolAdapter] = None
+ status: int = 0
+ config: dict = None
+
+ def set_protocol(self, protocol: str):
+ secure = protocol.endswith('s')
+ base_protocol = protocol[:-1] if secure else protocol
+
+ if base_protocol == 'http':
+ self.protocol = HttpProtocolAdapter(secure=secure)
+ elif base_protocol == "local":
+ self.protocol = LocalProtocolAdapter()
+ else:
+ raise ValueError(f"Unsupported protocol: {protocol}")
+
+ def start_service(self) -> dict:
+ self.status = 1
+ return {
+ 'status': 'success',
+ 'message': f'Service {self.id} started successfully',
+ 'service': {
+ 'id': self.id,
+ 'name': self.name,
+ 'endpoint': self.endpoint,
+ 'protocol': self.protocol.__class__.__name__,
+ 'status': 'running'
+ }
+ }
+
+ def stop_service(self) -> dict:
+ self.status = 0
+ return {
+ 'status': 'success',
+ 'message': f'Service {self.id} stopped successfully',
+ 'service': {
+ 'id': self.id,
+ 'name': self.name,
+ 'endpoint': self.endpoint,
+ 'protocol': self.protocol.__class__.__name__,
+ 'status': 'stopped'
+ }
+ }
+
+ def execute(self, message: str) -> str:
+ schema = self._get_schema()
+ params = self._generate_parameters(message, schema)
+ try:
+ return self.protocol.request({
+ "method": self.config.get('method', ""),
+ "parameters": params,
+ "uri": self.endpoint
+ })
+ except Exception as e:
+ return f"Execution error: {str(e)}"
+
+ def _get_schema(self) -> str:
+ schema_name = self.config.get('schema', "")
+ if schema_name:
+ schema = db_manager.schemas.get_by_name(schema_name)
+ if schema:
+ schema = dict(schema)
+ return schema.get('content') if schema else ""
+
+ return ""
+
+ @staticmethod
+ def _generate_parameters(message: str, schema: str) -> dict:
+ prompt = OnlinePrompt("parameter_generate").generate(message)
+ prompt = prompt.replace("{{schema}}", schema)
+ return parse_json_string(run_llm_by_message(prompt))
+
+
+class MCPManager:
+ def __init__(self, db_path: str):
+ self.db = BaseCRUD('services', db_path)
+ self._init_db()
+ self.services: Dict[str, MCPService] = {}
+ self._sync_from_db()
+
+ def _init_db(self):
+ with self.db.get_connection() as conn:
+ conn.execute('''
+ CREATE TABLE IF NOT EXISTS services (
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
+ name TEXT UNIQUE NOT NULL,
+ instance_name TEXT NOT NULL,
+ instance_status INTEGER NOT NULL,
+ endpoint TEXT NOT NULL,
+ protocol TEXT NOT NULL,
+ config JSON,
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
+ )
+ ''')
+
+ def _sync_from_db(self):
+ services = self.db.get_all()['items']
+ for service in services:
+ mcp_service = MCPService(
+ id=service['id'],
+ instance_name=service['instance_name'],
+ name=service['name'],
+ endpoint=service['endpoint'],
+ status=service['instance_status'],
+ config=json.loads(service['config'])
+ )
+ mcp_service.set_protocol(service['protocol'])
+ self.services[str(mcp_service.id)] = mcp_service
+
+ def list_services(self) -> List[dict]:
+ return [dict(item) for item in self.db.get_all()['items']]
+
+ def get_status(self) -> dict:
+ with self.db.get_connection() as conn:
+ total_services = conn.execute('SELECT COUNT(*) FROM services').fetchone()[0]
+ return {"total_services": total_services}
+
+ def register_service(self, name: str, endpoint: str, protocol: str, config: dict = None) -> None:
+ if protocol not in ['http', 'https', 'local']:
+ raise ValueError(f"Unsupported protocol: {protocol}")
+
+ instance_name = f"mcp-{name.lower().replace(' ', '-')}"
+ config = config if config else {}
+
+ _id = self.db.create(
+ name=name,
+ instance_name=instance_name,
+ instance_status=0,
+ endpoint=endpoint,
+ protocol=protocol,
+ config=json.dumps(config)
+ )
+
+ service = MCPService(
+ id=_id,
+ instance_name=instance_name,
+ name=name,
+ endpoint=endpoint,
+ config=config
+ )
+ service.set_protocol(protocol)
+ self.services[str(_id)] = service
+
+ def unregister_service(self, service_id: str) -> None:
+ self.db.delete(service_id)
+ if service_id in self.services:
+ del self.services[service_id]
+
+ def create_service(self, name: str, endpoint: str, protocol: str, config: dict = None) -> dict:
+ try:
+ self.register_service(name, endpoint, protocol, config)
+ return {'status': 'success', 'message': f'Service {name} created successfully'}
+ except Exception as e:
+ return {'status': 'error', 'message': str(e)}
+
+ def delete_service(self, service_id: str) -> dict:
+ try:
+ self.unregister_service(service_id)
+ return {'status': 'success', 'message': f'Service {service_id} deleted successfully'}
+ except Exception as e:
+ return {'status': 'error', 'message': str(e)}
+
+ def start_service(self, service_id: str) -> dict:
+ if service_id not in self.services:
+ return {'status': 'error', 'message': f"Service {service_id} not found"}
+
+ service = self.services[service_id]
+ try:
+ result = service.start_service()
+ self.db.update(service.id, instance_status=1)
+ return result
+ except Exception as e:
+ return {'status': 'error', 'message': str(e)}
+
+ def stop_service(self, service_id: str) -> dict:
+ if service_id not in self.services:
+ return {'status': 'error', 'message': f"Service {service_id} not found"}
+
+ service = self.services[service_id]
+ try:
+ result = service.stop_service()
+ self.db.update(service.id, instance_status=0)
+ return result
+ except Exception as e:
+ return {'status': 'error', 'message': str(e)}
+
+ def restart_service(self, service_id: str) -> dict:
+ if service_id not in self.services:
+ return {'status': 'error', 'message': f"Service {service_id} not found"}
+
+ try:
+ self.stop_service(service_id)
+ return self.start_service(service_id)
+ except Exception as e:
+ return {'status': 'error', 'message': str(e)}
+
+ def check_health(self, service_id: str) -> dict:
+ if service_id not in self.services:
+ return {'status': 'error', 'message': f"Service {service_id} not found"}
+
+ service = self.services[service_id]
+ is_healthy = service.status == 1
+ return {
+ 'status': 'success',
+ 'healthy': is_healthy,
+ 'message': f'Service {service_id} is {"healthy" if is_healthy else "unhealthy"}'
+ }
+
+ def update_service(self, service_id: str, **kwargs) -> dict:
+ if service_id not in self.services:
+ return {'status': 'error', 'message': f"Service {service_id} not found"}
+
+ service = self.services[service_id]
+ update_fields = {}
+
+ if 'name' in kwargs:
+ service.name = kwargs['name']
+ update_fields['name'] = kwargs['name']
+
+ if 'endpoint' in kwargs:
+ service.endpoint = kwargs['endpoint']
+ update_fields['endpoint'] = kwargs['endpoint']
+
+ if 'protocol' in kwargs:
+ service.set_protocol(kwargs['protocol'])
+ update_fields['protocol'] = kwargs['protocol']
+
+ if 'config' in kwargs:
+ service.config = kwargs['config']
+ update_fields['config'] = json.dumps(kwargs['config'])
+
+ if 'status' in kwargs:
+ service.status = kwargs['status']
+ update_fields['instance_status'] = kwargs['status']
+
+ try:
+ if update_fields:
+ self.db.update(service.id, **update_fields)
+
+ return {
+ 'status': 'success',
+ 'message': f'Service {service_id} updated successfully',
+ 'service': {
+ 'id': service.id,
+ 'name': service.name,
+ 'endpoint': service.endpoint,
+ 'protocol': service.protocol.name,
+ 'status': service.status,
+ 'config': service.config
+ }
+ }
+ except Exception as e:
+ return {'status': 'error', 'message': str(e)}
+
+
+mcp_manager = MCPManager(conf.db_uri)
+
+
+class MCPPredictError(Exception):
+ pass
+
+
+class MCPEngine(BaseEngine):
+ def __init__(self):
+ super().__init__("mcp_engine")
+ self._manager = mcp_manager
+ self._context = None
+ self._file = None
+ self.pool = {}
+ self.services = {}
+
+ def set_context(self, context: str):
+ self._context = context
+
+ def set_file(self, file: str):
+ self._file = file
+
+ @staticmethod
+ def _load_services_info() -> Dict[str, dict]:
+ services = mcp_manager.list_services()
+ return {i['name']: i for i in services if i['instance_status'] == 1}
+
+ # def _rewrite(self, message: str):
+ # op = OnlinePrompt("rewrite_question")
+ # op.set_external(self._context)
+ # prompt = op.generate(message)
+ # response = run_llm_by_message(prompt)
+ # try:
+ # return parse_json_string(response)
+ # except Exception as e:
+ # return {"rewrite": message, "keywords": []}
+
+ def _predict(self, message: str) -> List[dict]:
+ self.services = self._load_services_info()
+ external_str = "- [chat](优先级2) 根据上下文回答一些简单的问题\n- [context](优先级5) 涉及前文,前面内容时,必须调用\n"
+
+ for name, info in self.services.items():
+ if info['protocol'] == 'local':
+ tool = self.tool_pool.get(name)
+ if tool:
+ self.pool[name] = tool.description
+ external_str += f"- [{name}](优先级4) {tool.description} \n"
+ else:
+ config = json.loads(info.get('config', "{}"))
+ desc = config.get('description', '')
+ self.pool[name] = desc
+ external_str += f"- [{name}](优先级3) {desc} \n"
+
+ op = OnlinePrompt(self.name)
+ op.set_external(external_str)
+ prompt = op.generate(message)
+ response = think_by_message(prompt)
+ try:
+ return parse_json_string(response)
+ except Exception as e:
+ return []
+
+ def _run_task(self, message: str, task: dict, external_data: str = "") -> dict:
+ tool_name = task.get("tool", "")
+ question = task.get("question", "")
+
+ if not tool_name:
+ return {"tool": "error", "output": "text", "data": f"Tool:{tool_name} execute error"}
+
+ task_prompt = f"main_task: {message}\nsub_task: {question}"
+ if external_data:
+ task_prompt = f"{external_data}\n{task_prompt}"
+ if tool_name == "chat":
+ return {"tool": "answer", "output": "text", "data": task.get("answer", "")}
+ elif tool_name == "context":
+ return {"tool": "context", "output": "text", "data": self._context}
+ if tool_name in self.tool_pool:
+ tool = self.tool_pool[tool_name]
+ tool.set_file_name(self._file)
+ return tool.execute(task_prompt)
+
+ if tool_name in self.services:
+ service = self._manager.services[str(self.services[tool_name]['id'])]
+ return {"tool": tool_name, "output": "text", "data": service.execute(task_prompt)}
+
+ return {"tool": "chat", "output": "text", "data": message}
+
+ def run(self, message: str, file_name: str = None, plugin_type: str = None) -> dict:
+ # question = self._rewrite(message)["rewrite"]
+ question = message
+ tasks = self._predict(question)
+ if isinstance(tasks, dict):
+ tasks = [tasks]
+
+ external_data = ""
+ result = {"tool": "error", "output": "text", "data": "MCP engine execute error"}
+ print(tasks)
+ for task in tasks:
+ result = self._run_task(message, task, external_data)
+ if result['tool'] not in ["chat", "error"]:
+ external_data += result['data']
+ return result
+
+
+mcp_engine = MCPEngine()
+mcp_engine.add_tool(weather_search)
+mcp_engine.add_tool(web_scraper)
+mcp_engine.add_tool(rag_search)
diff --git a/extension/rag.py b/extension/rag.py
new file mode 100644
index 0000000..6b80777
--- /dev/null
+++ b/extension/rag.py
@@ -0,0 +1,142 @@
+import time
+from typing import List
+
+import jieba
+import jieba.analyse
+from lancedb import connect
+from core.model import get_embedding_model, get_chat_model
+from extension.document_loader import DocumentLoader
+from extension.standard import OnlinePrompt, parse_json_string
+
+
+class RAGPipeline:
+ def __init__(
+ self,
+ db_path: str = "./db/vec",
+ default_table_name: str = "documents",
+ embedding_model: str = "bge-large",
+ llm_model: str = "qwen2.5:7b",
+ chunk_size: int = 512,
+ chunk_overlap: int = 200,
+ ):
+ self.embeddings = get_embedding_model(embedding_model)
+ self.llm = get_chat_model(llm_model)
+ self.db = connect(db_path)
+ self.default_table_name = default_table_name
+ self.document_loader = DocumentLoader(config={"chunk_size": chunk_size, "chunk_overlap": chunk_overlap})
+
+ def _insert(self, texts: list, extension: str, table_name: str = None):
+ table_name = table_name or self.default_table_name
+ embeddings = self.embeddings.embed_documents(texts)
+ time_stamp = int(time.time())
+ data = [
+ {
+ "text": text.replace("\n", "").replace("\t", "").replace("\r", ""),
+ "text_fts":text.replace("\n", "").replace("\t", "").replace("\r", "").replace(" ", ""),
+ "vector": embedding,
+ "extension": extension,
+ "time_stamp": time_stamp
+ }
+ for text, embedding in zip(texts, embeddings)
+ ]
+
+ if table_name in self.db.table_names():
+ table = self.db.open_table(table_name)
+ table.add(data)
+ else:
+ # Create table with explicit schema including FTS index
+ self.db.create_table(
+ table_name,
+ data=data,
+ mode="overwrite"
+ )
+
+ def insert_document(self, file_path: str, table_name: str = None, extension: str = None):
+ self.document_loader.load_content(file_path, extension)
+ chunks = self.document_loader.load_and_split()
+ texts = [chunk.page_content for chunk in chunks]
+ self._insert(texts, self.document_loader.extension, table_name)
+
+ def insert_text_content(self, content: str, table_name: str = None):
+ chunks = self.document_loader.split_text(content)
+ texts = [chunk for chunk in chunks]
+ self._insert(texts, ".txt", table_name)
+
+ @staticmethod
+ def _extract_keywords(question: str) -> List[str]:
+ # Use TF-IDF and TextRank combination for keyword extraction
+ tfidf_kws = jieba.analyse.extract_tags(
+ question, topK=3, withWeight=False, allowPOS=('n', 'vn', 'v'))
+ textrank_kws = jieba.analyse.textrank(
+ question, topK=3, withWeight=False, allowPOS=('n', 'vn', 'v'))
+
+ # Merge and deduplicate keywords
+ combined_kws = list(set(tfidf_kws + textrank_kws))
+ return [kw for kw in combined_kws if len(kw) > 1] # filter short keywords
+
+ @staticmethod
+ def _build_keyword_condition(keywords: List[str]) -> str:
+ if not keywords:
+ return ""
+ conditions = [f"text LIKE '%{kw}%'" for kw in keywords]
+ return " OR ".join(conditions)
+
+ def _rewrite_question(self, question: str) -> dict:
+ # Use LLM to rewrite the question
+ op = OnlinePrompt("rewrite_question")
+ prompt = op.generate(question)
+ response = self.llm.llm(prompt)
+ return parse_json_string(response)
+
+ def query(self, question: str, k: int = 10, table_name: str = None) -> list[dict]:
+ # Extract keywords and parse question
+ keywords = self._extract_keywords(question)
+ rewritten_data = self._rewrite_question(question)
+ keywords = [k for k in rewritten_data.get("keywords", []) if k in keywords]
+ rewritten_question = rewritten_data.get("rewrite", "")
+
+ # Vector search with rewritten question
+ question_embedding = self.embeddings.embed_query(rewritten_question)
+ table_name = table_name or self.default_table_name
+ table = self.db.open_table(table_name)
+
+ indices = table.list_indices()
+ index_exists = any(
+ index["column_name"] == "text_fts" and index["index_type"] == "INVERTED"
+ for index in indices
+ )
+
+ if not index_exists:
+ try:
+ table.create_fts_index("text_fts")
+ except ValueError as e:
+ if "Index already exists" in str(e):
+ # If index exists but was not detected, try replacing it
+ table.create_fts_index("text_fts", replace=True)
+ else:
+ raise e
+ combined = []
+ for key in keywords:
+ combined += (table.search(query_type="hybrid")
+ .vector(question_embedding)
+ .text(key)
+ .select(["text", "extension", "time_stamp"])
+ .limit(k)
+ .to_list())
+ # print(table.search(query_type="fts")
+ # .vector([])
+ # .text(key)
+ # .select(["text", "extension", "time_stamp"])
+ # .limit(k)
+ # .to_list())
+ # Rerank results (simple time-weighted sort)
+ return sorted(combined,
+ key=lambda x: -x['time_stamp'])
+
+
+rag_pipline = RAGPipeline()
+if __name__ == "__main__":
+ # 直接插入文本内容的示例
+ rag_pipline.insert_text_content("这是一个要嵌入的示例文本。")
+ result = rag_pipline.query("示例文本是什么?")
+ print(result)
diff --git a/extension/standard.py b/extension/standard.py
new file mode 100644
index 0000000..3956708
--- /dev/null
+++ b/extension/standard.py
@@ -0,0 +1,208 @@
+import base64
+import json
+import os
+import re
+
+from pysmx.SM3 import hexdigest
+
+from core.config import conf
+from core.types import BaseCRUD
+from core.model import run_llm_by_message
+from core.types import BasePrompt
+
+
+class LocalResourceManager:
+
+ def __init__(self, base_dir: str = "/docs"):
+ self.BASE_DIR = os.getcwd() + base_dir
+
+ @staticmethod
+ def generate_sm3(file_bytes: bytes):
+ return hexdigest(file_bytes)
+
+ def exists(self, resource_type: str, resource_name: str) -> bool:
+ path = "\\".join([i for i in [self.BASE_DIR, resource_type, resource_name] if i != ""])
+ return os.path.exists(path)
+
+ @staticmethod
+ def _write(path: str, file: bytes):
+ with open(path, "wb") as f:
+ f.write(file)
+
+ @staticmethod
+ def _read(path: str) -> bytes:
+ with open(path, "rb") as f:
+ return f.read()
+
+ @staticmethod
+ def _remove(path) -> bool:
+ try:
+ os.remove(path)
+ return True
+ except Exception as e:
+ return False
+
+ def create(self, resource_type: str, resource_name: str, file: bytes) -> bool:
+ exists = self.exists(resource_type, resource_name)
+ if exists:
+ return False
+ else:
+ file_path = "/".join([i for i in [self.BASE_DIR, resource_type, resource_name] if i != ""])
+ try:
+ self._write(file_path, file)
+ return True
+ except Exception as e:
+ raise Exception(f"Create file failed: {file_path}")
+
+ def update(self, resource_type: str, resource_name: str, file: bytes) -> bool:
+ exists = self.exists(resource_type, resource_name)
+ if not exists:
+ return False
+ else:
+ file_path = "/".join([i for i in [self.BASE_DIR, resource_type, resource_name] if i != ""])
+ try:
+ self._write(file_path, file)
+ return True
+ except Exception as e:
+ raise Exception(f"Update file failed: {file_path}")
+
+ def get(self, resource_type: str, resource_name: str) -> bytes:
+ file_path = "\\".join([i for i in [self.BASE_DIR, resource_type, resource_name] if i != ""])
+ exists = self.exists(resource_type, resource_name)
+ if exists:
+ return self._read(file_path)
+ else:
+ raise FileNotFoundError(f"File is not exists: {file_path}")
+
+ def delete(self, resource_type: str, resource_name: str) -> bool:
+ file_path = "/".join([i for i in [self.BASE_DIR, resource_type, resource_name] if i != ""])
+ exists = self.exists(resource_type, resource_name)
+ if not exists:
+ return self._remove(file_path)
+ else:
+ raise FileNotFoundError(f"File is not exists: {file_path}")
+
+ def download_bytes(self, path: str, file_type: str = ""):
+ return self.get(file_type, path)
+
+
+class ChatFileManager(LocalResourceManager):
+ def __init__(self, base_dir: str = "/docs"):
+ super().__init__(base_dir)
+ self.type = "files"
+ self.extension_mapping = json.loads(self.get("json", "file_extension.json"))
+
+ @staticmethod
+ def encode_postfix(content: str) -> str:
+ return base64.b64encode(content.encode("utf-8")).decode("utf-8")
+
+ @staticmethod
+ def decode_postfix(content: str) -> str:
+ return base64.b64decode(content).decode("utf-8")
+
+ def parse_file_id(self, file_id):
+ postfix = ""
+ if "_" in file_id:
+ file_id, postfix = file_id.split("_")
+ postfix = "." + self.decode_postfix(postfix)
+ return file_id, postfix
+
+ def _generate_file_id(self, file_name: str, file_content: bytes):
+ postfix = ""
+ if "." in file_name:
+ postfix = file_name.split(".")[-1]
+ file_id = resource_manager.generate_sm3(file_content)
+ return file_id, self.encode_postfix(postfix)
+
+ def c_get(self, file_id: str) -> (bytes, str):
+ file_id, postfix = self.parse_file_id(file_id)
+ return self.get(self.type, file_id), postfix
+
+ def c_create(self, file_name: str, file_content: bytes) -> str:
+ file_id, postfix = self._generate_file_id(file_name, file_content)
+ if self.exists(self.type, file_id):
+ return file_id + "_" + postfix
+ if self.create(self.type, file_id, file_content):
+ return file_id + "_" + postfix
+ else:
+ return ""
+
+
+class DatabaseManager:
+ def __init__(self, db_path):
+ self.db_path = db_path
+ self.prompts = BaseCRUD('prompts', db_path)
+ self.schemas = BaseCRUD('schemas', db_path)
+
+ def init_db(self):
+ if not os.path.exists(self.db_path):
+ with self.prompts.get_connection() as conn:
+ conn.execute('''
+ CREATE TABLE prompts (
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
+ name TEXT UNIQUE NOT NULL,
+ content TEXT NOT NULL,
+ variables TEXT, -- 存储变量信息
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
+ )
+ ''')
+ conn.execute('''
+ CREATE TABLE schemas (
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
+ name TEXT UNIQUE NOT NULL,
+ content TEXT NOT NULL,
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
+ )
+ ''')
+ conn.commit()
+
+
+class Prompt(BasePrompt):
+ def _load_prompt(self):
+ return resource_manager.get("prompt", self.name)
+
+ def _load_schema(self):
+ return resource_manager.get("schema", self.name)
+
+
+class OnlinePrompt(BasePrompt):
+ def _load_prompt(self):
+ result = db_manager.prompts.get_by_name(self.name)
+ if result is None:
+ return None
+ result = dict(result)
+ return result.get("content")
+
+ def _load_schema(self):
+ result = db_manager.schemas.get_by_name(self.name)
+ if result is None:
+ return None
+ result = dict(result)
+ return result.get("content")
+
+
+db_manager = DatabaseManager(conf.db_uri)
+db_manager.init_db()
+
+resource_manager = LocalResourceManager()
+chat_file_manager = ChatFileManager()
+
+
+def run_llm_by_template(message: str, template_name: str):
+ pmt = OnlinePrompt(template_name)
+ prompt = pmt.generate(message)
+ return run_llm_by_message(prompt)
+
+
+def parse_json_string(text: str):
+ if "" in text:
+ text = text.split("")[-1]
+ if "```" in text:
+ text = re.findall("```(.*?){0,1}\n(.*?)\n```", text, re.S)[0][1]
+ else:
+ if "'" in text and '"' not in text:
+ text = text.replace("'", "\"")
+ try:
+ return json.loads(text)
+ except Exception:
+ return {}
diff --git a/function/context.py b/function/context.py
new file mode 100644
index 0000000..f395f9d
--- /dev/null
+++ b/function/context.py
@@ -0,0 +1,37 @@
+#!/usr/bin/env python
+# -*- coding:utf-8 -*-
+# @Filename: context.py
+# @Author: lychang
+# @Time: 7/5/2023 5:53 PM
+from sympy.parsing.maxima import sub_dict
+
+from extension.rag import rag_pipline
+
+from core.types import BaseTool
+
+
+
+
+
+class RAGSearch(BaseTool):
+ def __init__(self):
+ name = "rag_search"
+ description = "提及在文件中搜索时,使用此工具。"
+ super(RAGSearch, self).__init__(name, description)
+ self.execute = self.search
+
+ @staticmethod
+ def _get_sub_task(message: str):
+ return message.split("sub_task:")[-1] if "sub_task:" in message else message
+
+ def search(self, message: str):
+ sub_task = self._get_sub_task(message)
+ result = "不包含相关内容"
+ if self._file:
+ response = rag_pipline.query(sub_task,10,self._file)
+ results = set([r["text"] for r in response])
+ result = "\n\n##\n".join(results)
+ return self.normal(result)
+
+
+rag_search = RAGSearch()
diff --git a/function/file_persist.py b/function/file_persist.py
new file mode 100644
index 0000000..e69de29
diff --git a/function/weather.py b/function/weather.py
new file mode 100644
index 0000000..839e76b
--- /dev/null
+++ b/function/weather.py
@@ -0,0 +1,83 @@
+#!/usr/bin/env python
+# -*- coding:utf-8 -*-
+# @Filename: weather.py
+# @Author: lychang
+# @Time: 7/5/2023 5:53 PM
+import re
+import json
+import requests
+from fuzzywuzzy import process
+
+from core.types import BaseTool
+from extension.standard import resource_manager
+
+
+class CityMatcher:
+ def __init__(self):
+ self.data = json.loads(resource_manager.get("json", "city.json").decode('utf-8'))
+ self.area_map = self._build_area_map()
+
+ def _build_area_map(self):
+ area_map = {}
+ for province, cities in self.data.items():
+ for city, districts in cities.items():
+ for district, info in districts.items():
+ area_map[info['NAMECN']] = info['AREAID']
+ return area_map
+
+ def find_area_id(self, area_name, threshold=80):
+ match = process.extract(area_name, self.area_map.keys(), limit=5)
+ return [self.area_map[i[0]] for i in match if i[1] >= threshold]
+
+
+matcher = CityMatcher()
+
+
+class WeatherSearch(BaseTool):
+ headers = {
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
+ "(KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.0.0"}
+
+ def __init__(self):
+ name = "weather_search"
+ description = "在提及天气时,对天气数据进行查询"
+ super(WeatherSearch, self).__init__(name, description)
+ self.execute = self.search
+
+ @staticmethod
+ def _get_city_code(message: str):
+ area_id = matcher.find_area_id(message)
+ if area_id:
+ return area_id
+ else:
+ return ["101030100"]
+
+ @staticmethod
+ def _get_sub_task(message: str):
+ return message.split("sub_task:")[-1] if "sub_task:" in message else message
+
+ def _get_city_info(self, city_code: str):
+ url = f"http://www.weather.com.cn/weather/{city_code}.shtml"
+ resp = requests.get(url, headers=self.headers)
+ resp.encoding = "utf-8"
+ weather_html = re.findall('', resp.text, re.S)[0].replace("\n", "")
+ weather_info = re.findall(
+ '(.*?)
.*?(.*?)
(.*?)
',
+ weather_html)
+ result = city_code + "\n"
+ for wea in weather_info:
+ result += " ".join(wea) + "\n"
+ result = result.replace("", "").replace("", "")
+ result = result.replace("", "").replace("", "")
+ return result
+
+ def search(self, message: str):
+ city_info = ""
+ sub_task = self._get_sub_task(message)
+ for city_code in self._get_city_code(sub_task):
+ city_info += self._get_city_info(city_code)
+ return self.normal(city_info)
+
+
+weather_search = WeatherSearch()
diff --git a/function/web_tool.py b/function/web_tool.py
new file mode 100644
index 0000000..c9c8d4b
--- /dev/null
+++ b/function/web_tool.py
@@ -0,0 +1,139 @@
+import re
+from urllib.parse import quote
+
+import html2text
+import requests
+from urlextract import URLExtract
+
+from core.types import BaseTool
+
+
+class SplashDriver:
+ def __init__(self, base_url: str):
+ self.base_url = base_url
+ self.headers = None
+
+ def set_options(self, headers: dict = None):
+ """Set options for splash"""
+
+ headers_lua = """
+local headers = {
+ ["User-Agent"] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 Edg/134.0.0.0",
+ ["Accept-Language"] = "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
+ ["Connection"] = "keep-alive",
+ ["Cache-Control"] = "max-age=0",
+ ["Upgrade-Insecure-Requests"] = "1",
+ ["Accept"] = "text/html,application/xhtml+xml,application/xml,*/*;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
+ {{extra_headers}}
+}
+ """
+ if headers:
+ headers_lua = headers_lua.replace("{{extra_headers}}",
+ '\n'.join([f'["{k}"] = "{v}"' for k, v in headers.items()]))
+ else:
+ headers_lua = headers_lua.replace("{{extra_headers}}", "")
+ self.headers = headers_lua
+
+ def _set_lua_script(self, url: str):
+ """Set lua script for splash"""
+ if not self.headers:
+ self.set_options()
+ lua = f'''
+function main(splash, args)
+ splash.images_enabled = false
+ splash.private_mode_enabled = true
+ splash.resource_timeout = 10.0
+ local url = "{url}"
+ {self.headers}
+''' + '''
+ -- 发起请求
+ local ok, reason = splash:go({url, headers = headers })
+ if not ok then
+ return { error = reason }
+ end
+
+ -- 返回结果
+ return {
+ html = splash:html(),
+ url = splash:url(),
+ }
+end
+'''
+ return lua
+
+ def get(self, url: str):
+ """Get url with splash"""
+ lua = self._set_lua_script(url)
+ url = f'{self.base_url}/execute?lua_source=' + quote(lua)
+
+ response = requests.get(url)
+
+ return response.json()["html"]
+
+
+class WebScraper(BaseTool):
+
+ def __init__(self):
+ name = "web_scraper"
+ description = "在提到某些具体的网站地址时,可以从该网站上获取相关信息。"
+ super(WebScraper, self).__init__(name, description)
+ self.extractor = URLExtract()
+ self.driver = SplashDriver(base_url="http://192.168.1.100:8050")
+
+ self.execute = self.search
+
+ @staticmethod
+ def _parse_html(html: str) -> str:
+ """解析HTML"""
+ html = re.sub(".*?", "", html, flags=re.S)
+ html = re.sub(".*?", "", html, flags=re.S)
+ html = re.sub(".*?", "", html, flags=re.S)
+ html = re.sub("", "", html, flags=re.S)
+ h = html2text.HTML2Text()
+ h.ignore_links = False
+ h.ignore_images = True
+ h.ignore_tables = False
+ h.ignore_emphasis = True
+ h.ignore_headers = True
+ h.ignore_br = True
+ h.body_width = 0
+ text = h.handle(html)
+ text = re.sub("\[]\(.*?\)", "", text, flags=re.S)
+ return text
+
+ def set_headers(self, headers: dict):
+ self.driver.set_options(headers)
+
+ def split_urls(self, message: str):
+ """Get urls from message"""
+ urls = self.extractor.find_urls(message)
+ return list(set(urls))
+
+ def get_uri_resource(self, url):
+ """Fetch and process URI resource"""
+ try:
+ html = self.driver.get(url)
+ protocol = url.split("://")[0]
+ markdown = self._parse_html(html)
+ base_url = url[:-1] if url.endswith("/") else url
+ markdown = markdown.replace("(//", f"({protocol}://")
+ markdown = markdown.replace("(/", f"({base_url}/")
+ return markdown
+ except Exception as e:
+ print(f"Error fetching {url}: {e}")
+ return f"获取网页信息失败\n"
+
+ def search(self, message: str):
+ urls = self.extractor.find_urls(message)
+ uri_resource = "网页信息:\n"
+ if urls:
+ for url in urls:
+ uri_resource += self.get_uri_resource(url)
+ return self.normal(uri_resource)
+
+
+web_scraper = WebScraper()
+if __name__ == '__main__':
+ question = "https://cn.bing.com/search?q=%E5%8B%92%E5%B8%83%E6%9C%97%E8%A9%B9%E5%A7%86%E6%96%AF%E6%9C%80%E8%BF%91%E7%9A%84%E6%88%98%E7%BB%A9"
+ result = web_scraper.search(question)
+ print(result["data"])
diff --git a/http_test.py b/http_test.py
new file mode 100644
index 0000000..5e2dce6
--- /dev/null
+++ b/http_test.py
@@ -0,0 +1,4 @@
+import uvicorn
+
+if __name__ == '__main__':
+ uvicorn.run("api:app", host="0.0.0.0", port=80)
diff --git a/readme.md b/readme.md
new file mode 100644
index 0000000..9ecd541
--- /dev/null
+++ b/readme.md
@@ -0,0 +1,27 @@
+# chatbot
+
+## api
+- base `api config`
+- chat `chat interface`
+- mcp `model control protocol interface`
+- ui `user interface design`
+- prompt `prompt interface`
+- schema `schema interface`
+
+## core
+- config `config parameters`
+- model `model parameters`
+- types `types definition`
+- role `role definition`
+- mcp `model control protocol`
+## ui
+- index.html `index page`
+- mcp.html `mcp page`
+- schema_manager.html `schema manager page`
+- static `static files`
+## function
+- mcp `model control protocol`
+- caht `chat`
+- prompt `prompt`
+- schema `schema`
+- utils `utils functions`
\ No newline at end of file
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..8023d6d
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,32 @@
+langchain
+langchain-ollama
+langchain-community
+langchain-openai
+langchain-core
+langchain-text-splitters
+openai
+requests
+lancedb
+pydantic
+pypdf
+jieba
+tantivy
+minio
+
+################
+docx2txt
+snowland-smx
+PyJWT
+fastapi
+uvicorn
+cn2an
+pandas
+
+python-Levenshtein
+python-multipart
+starlette
+python-dotenv
+docling
+fuzzywuzzy
+html2text
+urlextract
\ No newline at end of file
diff --git a/structure.md b/structure.md
new file mode 100644
index 0000000..22f181c
--- /dev/null
+++ b/structure.md
@@ -0,0 +1,13 @@
+# chat-bot structure
+
+## agent
+
+## api
+
+## db(database)
+
+## docs
+
+## function
+
+## ui
diff --git a/test/1.pdf b/test/1.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..53663287835862f6e5a7b56d198ac462f8e67375
GIT binary patch
literal 4011100
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