Compare commits

..

52 Commits

Author SHA1 Message Date
黄欣 fe5f6a953a update 4 years ago
黄欣 d15dea5282 隐藏直连 4 years ago
郑皇 0bfc5ab22e dashboard日期T-1自动把条件带到接口 4 years ago
mispower f0e65253e6 修改配置文件,适配doris和kettle,隐藏excel追加功能 4 years ago
黄欣 f81bf463af 隐藏复用模板 4 years ago
黄欣 2aeda5890d update 4 years ago
黄欣 ffdb9c918c update 4 years ago
黄欣 2d54262a6f update 4 years ago
黄欣 cd37fbd164 添加SUM+GROUP BY函数 4 years ago
黄欣 773093114c update 4 years ago
黄欣 f3f0bf1284 修复明细表不及时显示问题 4 years ago
zhenghuang 2a198439e7 merge 4 years ago
zhenghuang 7dd44fb5aa 数据探索数据列 / 指标增加百分比,dashboard日期和日期范围默认T-1 4 years ago
zhenghuang 13df46f83b Merge remote-tracking branch 'origin/master' 4 years ago
zhenghuang 409cd06063 数据探索数据列 / 指标增加百分比,dashboard日期和日期范围默认T-1 4 years ago
wuguolin ed25619f8f excel 数据集 4 years ago
zhenghuang ce49fd603c Merge remote-tracking branch 'origin/master'
# Conflicts:
#	frontend/src/views/chart/components/table/TableNormal.vue
4 years ago
zhenghuang 0ad6d4eb49 数据探索数据列 / 指标增加百分比,dashboard日期和日期范围默认T-1 4 years ago
zhenghuang 86acd806c8 Merge branch 'dev'
# Conflicts:
#	frontend/src/views/chart/components/table/TableNormal.vue
4 years ago
zhenghuang 1bab686a15 Merge remote-tracking branch 'origin/package'
# Conflicts:
#	backend/pom.xml
#	frontend/src/views/chart/components/table/TableNormal.vue
4 years ago
黄欣 d17733bf83 修改标题、生成链接及交叉表优化 4 years ago
zhenghuang 5d7f1158d3 百分比组件 4 years ago
zhenghuang e00a8a22b7 百分比组件 4 years ago
郑皇 9780b414ed 权限代码 4 years ago
wuguolin 5a85a9af99 修改数据接入为数据源 4 years ago
郑皇 07dc56d98b 权限代码 4 years ago
郑皇 cb0ce5e1e7 权限代码 4 years ago
wuguolin 58f0d414ea 和并 4 years ago
wuguolin dbaf237acc 和并 4 years ago
wuguolin d6975f8fb7 和并 4 years ago
黄欣 6b168e6a39 Merge branch 'master' of http://git.51jingcheng.com/wuguolin/smartbi2 4 years ago
黄欣 c11df3238a update 4 years ago
黄欣 c3cf941b17 交叉表 4 years ago
郑皇 59724d1c6f 修改数据源预览数据为10条 4 years ago
wuguolin 623f7314bd 修改ignore 4 years ago
wuguolin 89ab23bde2 调整 4 years ago
wuguolin 99bdc28b96 将lombok还原 4 years ago
黄欣 87c4e50bcf 交叉表 4 years ago
黄欣 cbe738ed74 Merge branch 'master' of http://git.51jingcheng.com/wuguolin/smartbi2 4 years ago
黄欣 e6354b9ae7 update 4 years ago
wuguolin 80f2465aca 1.修改Ipsos部署版本配置 2.将lombok便签不识别的实例替换成getter和setter 3.调整地图图标需求的文件 4 years ago
zhenghuang 285cf4c6ec 数据源带出表列表和表结构以及表数据 4 years ago
zhenghuang f54fea726f 数据源带出表列表和表结构以及表数据 4 years ago
zhenghuang e82c8cf6ce 数据源带出表列表和表结构以及表数据 4 years ago
黄欣 336f3dd82e 修改样式 4 years ago
root 838f2cf24a Merge branch 'package' 4 years ago
黄欣 b6d8d8c459 update 4 years ago
root 47a1980d7f 添加包修改包名 4 years ago
sleepyocean 119c3ee0d2 change main color ref to lanhu 4 years ago
sleepyocean bbdb86f2be Merge branch 'master' of 49.235.142.162:wuguolin/smartbi2 5 years ago
sleepyocean 9b3d0f4719 topbar style change 5 years ago
wuguolin cc5c3af1b2 modify 5 years ago

4
.gitignore vendored

@ -56,3 +56,7 @@ pnpm-debug.log*
package-lock.json
conf/data/ehcache
data/

@ -23,6 +23,6 @@ create database smartbi
//变更系统管理菜单显示权限
update sys_menu set hidden=1 where menu_id=40;
update sys_menu set hidden=1 where menu_id=58;
update sys_menu set title='数据探索' where menu_id=10;
update sys_menu set title='数据源' where menu_id=34;
update sys_menu set title='Dashboard' where menu_id=30;
```

@ -67,6 +67,8 @@
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.18</version>
<scope>provided</scope>
</dependency>
<dependency>
@ -92,6 +94,7 @@
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
<scope>runtime</scope>
</dependency>
<dependency>
@ -195,8 +198,6 @@
<version>2.9.1</version>
</dependency>
<!--由于暂时插件接口未注册到公司仓库请先down下代码安装到本地仓库
https://github.com/dataease/dataease-plugins-->
<dependency>
<groupId>com.ipsos</groupId>
<artifactId>plugin-interface</artifactId>
@ -253,6 +254,12 @@
<artifactId>postgresql</artifactId>
<version>42.2.14</version>
</dependency>
<dependency>
<groupId>com.ipsos</groupId>
<artifactId>plugin-common</artifactId>
<version>1.3-LOCAL</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
@ -281,10 +288,11 @@
<configuration>
<addResources>true</addResources>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
<!-- <exclude>-->
<!-- <groupId>org.projectlombok</groupId>-->
<!-- <artifactId>lombok</artifactId>-->
<!-- </exclude>-->
<exclude>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
@ -333,6 +341,13 @@
<configuration>
<source>1.8</source>
<target>1.8</target>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.18</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
@ -396,19 +411,24 @@
</build>
<repositories>
<repository>
<id>pentaho-public</id>
<name>Pentaho Public</name>
<url>http://nexus.pentaho.org/content/groups/omni</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
<repository>
<id>pentaho-public</id>
<name>Pentaho Public</name>
<url>http://nexus.pentaho.org/content/groups/omni</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
<!-- <repository>-->
<!-- <id>AliRepo-aliyun</id>-->
<!-- <name>Alirepo.</name>-->
<!-- <url>https://maven.aliyun.com/repository/public</url>-->
<!-- </repository>-->
</repositories>
</project>

@ -15,7 +15,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
})
@ServletComponentScan
@EnableScheduling
@PropertySource(value = {"file:conf/smartbi.properties"}, encoding = "UTF-8", ignoreResourceNotFound = true)
@PropertySource(value = {"file:conf/ipsos.properties"}, encoding = "UTF-8", ignoreResourceNotFound = true)
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);

@ -7,7 +7,7 @@ import com.ipsos.base.domain.SysMenu;
import com.ipsos.base.domain.SysMenuExample;
import com.ipsos.base.mapper.SysMenuMapper;
import com.ipsos.base.mapper.ext.ExtPluginSysMenuMapper;
import com.ipsos.plugins.common.dto.PluginSysMenu;
import com.ipsos.common.dto.PluginSysMenu;
import com.ipsos.plugins.util.PluginUtils;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;

@ -1,6 +1,6 @@
package com.ipsos.base.mapper.ext;
import com.ipsos.plugins.common.dto.PluginSysMenu;
import com.ipsos.common.dto.PluginSysMenu;
import org.apache.ibatis.annotations.Param;
import java.util.List;

@ -5,7 +5,6 @@ import com.ipsos.base.domain.Datasource;
import com.ipsos.commons.utils.CompressUtils;
import com.ipsos.commons.utils.MybatisInterceptorConfig;
import com.ipsos.interceptor.MybatisInterceptor;
import com.ipsos.base.domain.*;
import com.ipsos.base.domain.AuthSource;
import com.ipsos.base.domain.FileContent;
import org.mybatis.spring.annotation.MapperScan;

@ -9,7 +9,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Value("${geo.rootpath:file:/opt/dataease/data/feature/full/}")
@Value("${geo.rootpath:file:conf/data/feature/full/}")
private String geoPath;
@Override

@ -1,6 +1,6 @@
package com.ipsos.controller.sys.request;
import com.ipsos.plugins.common.entity.XpackLdapUserEntity;
import com.ipsos.common.entity.XpackLdapUserEntity;
import lombok.Data;
import java.io.Serializable;

@ -4,6 +4,7 @@ import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.ipsos.base.domain.Datasource;
import com.ipsos.datasource.dto.TableFiled;
import com.ipsos.dto.DatasourceDTO;
import com.ipsos.commons.utils.AuthUtils;
import com.ipsos.commons.utils.PageUtils;
@ -20,6 +21,7 @@ import springfox.documentation.annotations.ApiIgnore;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
@Api(tags = "数据源:数据源管理")
@ApiSupport(order = 30)
@ -83,6 +85,18 @@ public class DatasourceController {
return datasourceService.getTables(datasource);
}
@ApiOperation("查询表字段")
@PostMapping("/getFields/{tableName}")
public List<TableFiled> getFields(@RequestBody Datasource datasource, @PathVariable String tableName) throws Exception {
return datasourceService.getFields(datasource, tableName);
}
@ApiOperation("查询表字段")
@PostMapping("/getData/{tableName}/{fetchSize}")
public Map<String, List> getData(@RequestBody Datasource datasource, @PathVariable String tableName, @PathVariable Integer fetchSize) throws Exception {
return datasourceService.getDataByDatasource(datasource, tableName, 0, fetchSize);
}
@ApiIgnore
@PostMapping("/getSchema")
public List<String> getSchema(@RequestBody Datasource datasource) throws Exception {

@ -30,6 +30,7 @@ import com.ipsos.datasource.dto.*;
import com.ipsos.datasource.request.DatasourceRequest;
import com.ipsos.exception.DataEaseException;
import com.ipsos.i18n.Translator;
import com.ipsos.provider.QueryProvider;
import com.ipsos.service.dataset.DataSetGroupService;
import com.ipsos.service.message.DeMsgutil;
@ -96,30 +97,31 @@ public class DatasourceService {
List<DatasourceDTO> datasourceDTOS = extDataSourceMapper.queryUnion(request);
datasourceDTOS.forEach(datasourceDTO -> {
DatasourceTypes datasourceType = DatasourceTypes.valueOf(datasourceDTO.getType());
try{
try {
switch (datasourceType) {
case mysql:
case mariadb:
case de_doris:
case ds_doris:
datasourceDTO.setConfiguration(JSONObject.toJSONString(new Gson().fromJson(datasourceDTO.getConfiguration(), MysqlConfiguration.class)) );
datasourceDTO.setConfiguration(JSONObject.toJSONString(new Gson().fromJson(datasourceDTO.getConfiguration(), MysqlConfiguration.class)));
break;
case sqlServer:
datasourceDTO.setConfiguration(JSONObject.toJSONString(new Gson().fromJson(datasourceDTO.getConfiguration(), SqlServerConfiguration.class)) );
datasourceDTO.setConfiguration(JSONObject.toJSONString(new Gson().fromJson(datasourceDTO.getConfiguration(), SqlServerConfiguration.class)));
break;
case oracle:
datasourceDTO.setConfiguration(JSONObject.toJSONString(new Gson().fromJson(datasourceDTO.getConfiguration(), OracleConfiguration.class)) );
datasourceDTO.setConfiguration(JSONObject.toJSONString(new Gson().fromJson(datasourceDTO.getConfiguration(), OracleConfiguration.class)));
break;
case pg:
datasourceDTO.setConfiguration(JSONObject.toJSONString(new Gson().fromJson(datasourceDTO.getConfiguration(), PgConfiguration.class)) );
datasourceDTO.setConfiguration(JSONObject.toJSONString(new Gson().fromJson(datasourceDTO.getConfiguration(), PgConfiguration.class)));
break;
case ck:
datasourceDTO.setConfiguration(JSONObject.toJSONString(new Gson().fromJson(datasourceDTO.getConfiguration(), CHConfiguration.class)) );
datasourceDTO.setConfiguration(JSONObject.toJSONString(new Gson().fromJson(datasourceDTO.getConfiguration(), CHConfiguration.class)));
break;
default:
break;
}
}catch (Exception ignore){}
} catch (Exception ignore) {
}
});
return datasourceDTOS;
@ -143,8 +145,8 @@ public class DatasourceService {
DatasetTableExample example = new DatasetTableExample();
example.createCriteria().andDataSourceIdEqualTo(datasourceId);
List<DatasetTable> datasetTables = datasetTableMapper.selectByExample(example);
if(CollectionUtils.isNotEmpty(datasetTables)){
DataEaseException.throwException(datasetTables.size() + Translator.get("i18n_datasource_not_allow_delete_msg"));
if (CollectionUtils.isNotEmpty(datasetTables)) {
DataEaseException.throwException(datasetTables.size() + Translator.get("i18n_datasource_not_allow_delete_msg"));
}
Datasource datasource = datasourceMapper.selectByPrimaryKey(datasourceId);
datasourceMapper.deleteByPrimaryKey(datasourceId);
@ -166,8 +168,8 @@ public class DatasourceService {
DatasourceRequest datasourceRequest = new DatasourceRequest();
datasourceRequest.setDatasource(datasource);
datasourceProvider.checkStatus(datasourceRequest);
return ResultHolder.success("Success");
}catch (Exception e){
return ResultHolder.success(datasourceProvider.getTables(datasourceRequest));
} catch (Exception e) {
return ResultHolder.error("Datasource is invalid: " + e.getMessage());
}
@ -175,8 +177,8 @@ public class DatasourceService {
public ResultHolder validate(String datasourceId) {
Datasource datasource = datasourceMapper.selectByPrimaryKey(datasourceId);
if(datasource == null){
return ResultHolder.error("Can not find datasource: "+ datasourceId);
if (datasource == null) {
return ResultHolder.error("Can not find datasource: " + datasourceId);
}
try {
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
@ -184,11 +186,11 @@ public class DatasourceService {
datasourceRequest.setDatasource(datasource);
datasourceProvider.checkStatus(datasourceRequest);
datasource.setStatus("Success");
return ResultHolder.success("Success");
}catch (Exception e){
return ResultHolder.success(datasourceProvider.getTables(datasourceRequest));
} catch (Exception e) {
datasource.setStatus("Error");
return ResultHolder.error("Datasource is invalid: " + e.getMessage());
}finally {
} finally {
datasourceMapper.updateByPrimaryKey(datasource);
}
}
@ -200,6 +202,14 @@ public class DatasourceService {
return datasourceProvider.getSchema(datasourceRequest);
}
public ResultHolder getTablesByDS(Datasource datasource) throws Exception {
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
DatasourceRequest datasourceRequest = new DatasourceRequest();
datasourceRequest.setDatasource(datasource);
datasourceProvider.checkStatus(datasourceRequest);
return ResultHolder.success(datasourceProvider.getTables(datasourceRequest));
}
public List<DBTableDTO> getTables(Datasource datasource) throws Exception {
Datasource ds = datasourceMapper.selectByPrimaryKey(datasource.getId());
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(ds.getType());
@ -244,6 +254,24 @@ public class DatasourceService {
return datasourceMapper.selectByPrimaryKey(id);
}
public List<TableFiled> getFields(Datasource datasource, String tableName) throws Exception {
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
DatasourceRequest datasourceRequest = new DatasourceRequest();
datasourceRequest.setDatasource(datasource);
QueryProvider qp = ProviderFactory.getQueryProvider(datasource.getType());
datasourceRequest.setQuery(qp.convertTableToSql(tableName, datasource));
return datasourceProvider.fetchResultField(datasourceRequest);
}
public Map<String, List> getDataByDatasource(Datasource datasource, String tableName, Integer offset, Integer fetchSize) throws Exception {
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
DatasourceRequest datasourceRequest = new DatasourceRequest();
datasourceRequest.setDatasource(datasource);
QueryProvider qp = ProviderFactory.getQueryProvider(datasource.getType());
datasourceRequest.setQuery(qp.createSQLPreview(qp.convertTableToSql(tableName, datasource), null, offset, fetchSize));
return datasourceProvider.fetchResultAndField(datasourceRequest);
}
public void initAllDataSourceConnectionPool() {
List<Datasource> datasources = datasourceMapper.selectByExampleWithBLOBs(new DatasourceExample());
datasources.forEach(datasource -> {
@ -267,7 +295,7 @@ public class DatasourceService {
}
}
public void updateDatasourceStatus(){
public void updateDatasourceStatus() {
List<Datasource> datasources = datasourceMapper.selectByExampleWithBLOBs(new DatasourceExample());
datasources.forEach(datasource -> {
// checkAndUpdateDatasourceStatus(datasource);
@ -275,7 +303,7 @@ public class DatasourceService {
});
}
private void checkAndUpdateDatasourceStatus(Datasource datasource){
private void checkAndUpdateDatasourceStatus(Datasource datasource) {
try {
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
DatasourceRequest datasourceRequest = new DatasourceRequest();
@ -287,7 +315,7 @@ public class DatasourceService {
}
}
private void checkAndUpdateDatasourceStatus(Datasource datasource, Boolean withMsg){
private void checkAndUpdateDatasourceStatus(Datasource datasource, Boolean withMsg) {
try {
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
DatasourceRequest datasourceRequest = new DatasourceRequest();
@ -301,14 +329,14 @@ public class DatasourceService {
if (!StringUtils.equals(temp.getStatus(), "Error")) {
sendWebMsg(datasource);
datasourceMapper.updateByPrimaryKeySelective(datasource);
}
}
}
}
private void sendWebMsg(Datasource datasource) {
String id = datasource.getId();
AuthURD authURD = AuthUtils.authURDR(id);
Set<Long> userIds = AuthUtils.userIdsByURD(authURD);
@ -318,10 +346,10 @@ public class DatasourceService {
Map<String, Object> param = new HashMap<>();
param.put("id", id);
param.put("name", datasource.getName());
String content = "数据源【" + datasource.getName() + "】无效";
DeMsgutil.sendMsg(userId, typeId, 1L, content, gson.toJson(param));
});
}

@ -4,6 +4,8 @@ import com.ipsos.base.domain.Datasource;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* Author: wangjiahao
* Date: 2021-05-18
@ -15,4 +17,6 @@ public class DatasourceDTO extends Datasource {
@ApiModelProperty("权限")
private String privileges;
private List<String> tables;
}

@ -1,6 +1,6 @@
package com.ipsos.plugins.loader;
import com.ipsos.plugins.common.annotation.PluginResultMap;
import com.ipsos.common.annotation.PluginResultMap;
import com.ipsos.plugins.config.SpringContextUtil;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSessionFactory;

@ -1,9 +1,9 @@
package com.ipsos.plugins.server;
import com.ipsos.commons.utils.ServletUtils;
import com.ipsos.plugins.common.dto.PluginSysMenu;
import com.ipsos.plugins.common.service.PluginComponentService;
import com.ipsos.plugins.common.service.PluginMenuService;
import com.ipsos.common.dto.PluginSysMenu;
import com.ipsos.common.service.PluginComponentService;
import com.ipsos.common.service.PluginMenuService;
import com.ipsos.plugins.config.SpringContextUtil;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

@ -3,7 +3,7 @@ package com.ipsos.plugins.server;
import com.ipsos.controller.sys.response.DeptNodeResponse;
import com.ipsos.commons.utils.BeanUtils;
import com.ipsos.plugins.common.entity.XpackGridRequest;
import com.ipsos.common.entity.XpackGridRequest;
import com.ipsos.plugins.config.SpringContextUtil;
import com.ipsos.plugins.xpack.dept.dto.request.XpackCreateDept;
import com.ipsos.plugins.xpack.dept.dto.request.XpackDeleteDept;

@ -1,7 +1,7 @@
package com.ipsos.plugins.server;
import com.ipsos.plugins.common.entity.XpackLdapUserEntity;
import com.ipsos.common.entity.XpackLdapUserEntity;
import com.ipsos.plugins.config.SpringContextUtil;
import com.ipsos.plugins.xpack.display.dto.response.SysSettingDto;
import com.ipsos.plugins.xpack.ldap.dto.response.LdapInfo;

@ -5,7 +5,7 @@ import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.ipsos.commons.utils.PageUtils;
import com.ipsos.commons.utils.Pager;
import com.ipsos.plugins.common.entity.XpackGridRequest;
import com.ipsos.common.entity.XpackGridRequest;
import com.ipsos.plugins.config.SpringContextUtil;
import com.ipsos.plugins.xpack.role.dto.response.XpackRoleDto;
import com.ipsos.plugins.xpack.role.dto.response.XpackRoleItemDto;

@ -3,8 +3,8 @@ package com.ipsos.plugins.util;
import com.ipsos.plugins.config.SpringContextUtil;
import com.ipsos.commons.license.DefaultLicenseService;
import com.ipsos.commons.license.F2CLicenseResponse;
import com.ipsos.plugins.common.dto.PluginSysMenu;
import com.ipsos.plugins.common.service.PluginMenuService;
import com.ipsos.common.dto.PluginSysMenu;
import com.ipsos.common.service.PluginMenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;

@ -7,6 +7,7 @@ import com.ipsos.datasource.dto.JdbcConfiguration;
import com.ipsos.dto.chart.ChartCustomFilterDTO;
import com.ipsos.dto.chart.ChartViewFieldDTO;
import com.ipsos.dto.sqlObj.SQLObj;
import com.ipsos.provider.mysql.MySQLConstants;
import com.ipsos.provider.pg.PgConstants;
import com.ipsos.base.domain.DatasetTableField;
@ -22,6 +23,8 @@ public abstract class QueryProvider {
public abstract String createSQLPreview(String sql, String orderBy);
public abstract String createSQLPreview(String sql, String orderBy, Integer offset, Integer limit);
public abstract String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds);
public abstract String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup);

@ -101,7 +101,12 @@ public class CKQueryProvider extends QueryProvider {
@Override
public String createSQLPreview(String sql, String orderBy) {
return "SELECT * FROM (" + sqlFix(sql) + ") AS tmp " + " LIMIT 0,1000";
return createSQLPreview(sql, orderBy, 0, 1000);
}
@Override
public String createSQLPreview(String sql, String orderBy, Integer offset, Integer limit) {
return "SELECT * FROM (" + sqlFix(sql) + ") AS tmp " + " LIMIT " + offset + "," + limit;
}
@Override

@ -73,7 +73,12 @@ public class DorisQueryProvider extends QueryProvider {
@Override
public String createSQLPreview(String sql, String orderBy) {
return "SELECT * FROM (" + sql + ") AS tmp ORDER BY " + orderBy + " LIMIT 0,1000";
return createSQLPreview(sql, orderBy, 0, 1000);
}
@Override
public String createSQLPreview(String sql, String orderBy, Integer offset, Integer limit) {
return "SELECT * FROM (" + sql + ") AS tmp ORDER BY " + orderBy + " LIMIT " + offset + "," + limit;
}
@Override

@ -105,7 +105,12 @@ public class EsQueryProvider extends QueryProvider {
@Override
public String createSQLPreview(String sql, String orderBy) {
return "SELECT * FROM (" + sqlFix(sql) + ") AS tmp " + " LIMIT 1000";
return createSQLPreview(sql, orderBy, 0, 1000);
}
@Override
public String createSQLPreview(String sql, String orderBy, Integer offset, Integer limit) {
return "SELECT * FROM (" + sqlFix(sql) + ") AS tmp " + " LIMIT " + limit;
}
@Override

@ -73,7 +73,12 @@ public class MysqlQueryProvider extends QueryProvider {
@Override
public String createSQLPreview(String sql, String orderBy) {
return "SELECT * FROM (" + sqlFix(sql) + ") AS tmp " + " LIMIT 0,1000";
return createSQLPreview(sql, orderBy, 0, 1000);
}
@Override
public String createSQLPreview(String sql, String orderBy, Integer offset, Integer limit) {
return "SELECT * FROM (" + sqlFix(sql) + ") AS tmp " + " LIMIT " + offset + "," + limit;
}
@Override
@ -83,6 +88,7 @@ public class MysqlQueryProvider extends QueryProvider {
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
.build();
List<SQLObj> xFields = new ArrayList<>();
String groupBySum = "";
if (CollectionUtils.isNotEmpty(fields)) {
for (int i = 0; i < fields.size(); i++) {
DatasetTableField f = fields.get(i);
@ -90,6 +96,13 @@ public class MysqlQueryProvider extends QueryProvider {
if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == 2) {
// 解析origin name中有关联的字段生成sql表达式
originField = calcFieldRegex(f.getOriginName(), tableObj);
if (originField.substring(0,3).toLowerCase().equals("sum")) {
String[] originFields = originField.split("\\|");
if (originFields.length > 1) {
originField = originFields[0];
groupBySum = originFields[1];
}
}
} else if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == 1) {
originField = String.format(MySQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), f.getOriginName());
} else {
@ -136,6 +149,7 @@ public class MysqlQueryProvider extends QueryProvider {
st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj);
if (StringUtils.isNotEmpty(groupBySum)) st_sql.add("groupBy", groupBySum);
return st_sql.render();
}
@ -217,7 +231,7 @@ public class MysqlQueryProvider extends QueryProvider {
}
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_Y_PREFIX, i);
// 处理纵轴字段
yFields.add(getYFields(y, originField, fieldAlias));
yFields.add(getYFields(y, originField, fieldAlias, table));
// 处理纵轴过滤
yWheres.addAll(getYWheres(y, originField, fieldAlias));
// 处理纵轴排序
@ -409,7 +423,7 @@ public class MysqlQueryProvider extends QueryProvider {
}
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_Y_PREFIX, i);
// 处理纵轴字段
yFields.add(getYFields(y, originField, fieldAlias));
yFields.add(getYFields(y, originField, fieldAlias, table));
// 处理纵轴过滤
yWheres.addAll(getYWheres(y, originField, fieldAlias));
// 处理纵轴排序
@ -523,7 +537,7 @@ public class MysqlQueryProvider extends QueryProvider {
}
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_Y_PREFIX, i);
// 处理纵轴字段
yFields.add(getYFields(y, originField, fieldAlias));
yFields.add(getYFields(y, originField, fieldAlias, table));
// 处理纵轴过滤
yWheres.addAll(getYWheres(y, originField, fieldAlias));
// 处理纵轴排序
@ -610,7 +624,7 @@ public class MysqlQueryProvider extends QueryProvider {
}
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_Y_PREFIX, i);
// 处理纵轴字段
yFields.add(getYFields(y, originField, fieldAlias));
yFields.add(getYFields(y, originField, fieldAlias, table));
// 处理纵轴过滤
yWheres.addAll(getYWheres(y, originField, fieldAlias));
// 处理纵轴排序
@ -971,7 +985,7 @@ public class MysqlQueryProvider extends QueryProvider {
return list;
}
private SQLObj getYFields(ChartViewFieldDTO y, String originField, String fieldAlias) {
private SQLObj getYFields(ChartViewFieldDTO y, String originField, String fieldAlias, String tableName) {
String fieldName = "";
if (StringUtils.equalsIgnoreCase(y.getOriginName(), "*")) {
fieldName = MySQLConstants.AGG_COUNT;
@ -982,6 +996,8 @@ public class MysqlQueryProvider extends QueryProvider {
String cast = String.format(MySQLConstants.CAST, originField, y.getDeType() == 2 ? MySQLConstants.DEFAULT_INT_FORMAT : MySQLConstants.DEFAULT_FLOAT_FORMAT);
String agg = String.format(MySQLConstants.AGG_FIELD, y.getSummary(), cast);
fieldName = String.format(MySQLConstants.CAST, agg, MySQLConstants.DEFAULT_FLOAT_FORMAT);
} else if (StringUtils.equalsIgnoreCase(y.getSummary(), "ratio")) {
fieldName = "sum(" + originField + ")/(SELECT sum(" + y.getOriginName() + ") FROM " + tableName + ")*100";
} else {
String cast = String.format(MySQLConstants.CAST, originField, y.getDeType() == 2 ? MySQLConstants.DEFAULT_INT_FORMAT : MySQLConstants.DEFAULT_FLOAT_FORMAT);
fieldName = String.format(MySQLConstants.AGG_FIELD, y.getSummary(), cast);
@ -992,6 +1008,9 @@ public class MysqlQueryProvider extends QueryProvider {
.fieldAlias(fieldAlias)
.build();
}
private SQLObj getYFields(ChartViewFieldDTO y, String originField, String fieldAlias) {
return this.getYFields(y, originField, fieldAlias, null);
}
private List<SQLObj> getYWheres(ChartViewFieldDTO y, String originField, String fieldAlias) {
List<SQLObj> list = new ArrayList<>();

@ -88,7 +88,12 @@ public class OracleQueryProvider extends QueryProvider {
@Override
public String createSQLPreview(String sql, String orderBy) {
return "SELECT * FROM (" + sqlFix(sql) + ") DE_TMP " + " WHERE rownum <= 1000";
return createSQLPreview(sql, orderBy, 0, 1000);
}
@Override
public String createSQLPreview(String sql, String orderBy, Integer offset, Integer limit) {
return "SELECT * FROM (" + sqlFix(sql) + ") DE_TMP " + " WHERE rownum <= " + limit;
}
@Override

@ -93,7 +93,12 @@ public class PgQueryProvider extends QueryProvider {
@Override
public String createSQLPreview(String sql, String orderBy) {
return "SELECT * FROM (" + sqlFix(sql) + ") AS tmp " + " LIMIT 1000 offset 0";
return createSQLPreview(sql, orderBy, 0, 1000);
}
@Override
public String createSQLPreview(String sql, String orderBy, Integer offset, Integer limit) {
return "SELECT * FROM (" + sqlFix(sql) + ") AS tmp " + " LIMIT " + limit + " offset " + offset;
}
@Override

@ -81,7 +81,12 @@ public class SqlserverQueryProvider extends QueryProvider {
@Override
public String createSQLPreview(String sql, String orderBy) {
return "SELECT top 1000 * FROM (" + sqlFix(sql) + ") AS tmp";
return createSQLPreview(sql, orderBy, 0, 1000);
}
@Override
public String createSQLPreview(String sql, String orderBy, Integer offset, Integer limit) {
return "SELECT top " + limit + " * FROM (" + sqlFix(sql) + ") AS tmp";
}
@Override

@ -197,6 +197,11 @@ public class ChartViewService {
}.getType());
yAxis.addAll(yAxisExt);
}
if (StringUtils.equalsIgnoreCase(view.getType(), "table-normal")) {
List<ChartViewFieldDTO> yAxisExt = new Gson().fromJson(view.getYAxisExt(), new TypeToken<List<ChartViewFieldDTO>>() {
}.getType());
xAxis.addAll(yAxisExt);
}
List<ChartViewFieldDTO> extStack = new Gson().fromJson(view.getExtStack(), new TypeToken<List<ChartViewFieldDTO>>() {
}.getType());
List<ChartViewFieldDTO> extBubble = new Gson().fromJson(view.getExtBubble(), new TypeToken<List<ChartViewFieldDTO>>() {

@ -1,6 +1,7 @@
package com.ipsos.service.sys;
import com.ipsos.auth.api.dto.CurrentUserDto;
import com.ipsos.common.entity.XpackLdapUserEntity;
import com.ipsos.controller.sys.base.BaseGridRequest;
import com.ipsos.controller.sys.request.LdapAddRequest;
import com.ipsos.controller.sys.request.SysUserCreateRequest;
@ -21,7 +22,6 @@ import com.ipsos.commons.utils.AuthUtils;
import com.ipsos.commons.utils.BeanUtils;
import com.ipsos.commons.utils.CodingUtil;
import com.ipsos.i18n.Translator;
import com.ipsos.plugins.common.entity.XpackLdapUserEntity;
import com.ipsos.plugins.xpack.oidc.dto.SSOUserInfo;
import org.apache.commons.collections4.CollectionUtils;

@ -1,7 +1,7 @@
spring.application.name=dataease
spring.application.name=ipsos
server.port=8081
#spring.aop.proxy-target-class=true
# Hikari
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.minimum-idle=5
@ -36,7 +36,9 @@ knife4j.setting.enableAfterScript=false
app.version=@project.version@
logging.file.path=/opt/smartbi/logs/${spring.application.name}
logging.file.path=conf/logs/${spring.application.name}
# view
spring.resources.static-locations=classpath:/templates/,classpath:/static/
@ -73,8 +75,7 @@ spring.cache.ehcache.config=classpath:/ehcache/ehcache.xml
#logging.level.org.springframework.boot.web=trace
#spring.mvc.log-request-details=true
pagehelper.PageRowBounds=true
#excel等用户上传文件路径
upload.file.path=/opt/smartbi/data/kettle/
dataease.sqlinjection.whitelists=/dataset/table/sqlPreview,/dataset/table/update

@ -71,7 +71,7 @@ CREATE TABLE `sys_msg_setting` (
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='';
BEGIN;
INSERT INTO `sys_menu` VALUES (53, 1, 3, 1, '', 'sys-msg-web', 'msg/index', 1000, 'all-msg', 'system-msg-web', b'0', b'0', b'0', NULL, NULL, NULL, NULL, NULL);
INSERT INTO `sys_menu` VALUES (53, 1, 3, 1, '', 'sys-msg-web', 'msg/index', 1000, 'all-msg', 'system-msg-web', b'0', b'0', b'1', NULL, NULL, NULL, NULL, NULL);
INSERT INTO `sys_menu` VALUES (54, 53, 0, 1, '', 'sys-msg-web-all', 'msg/all', 1, 'web-msg', 'all', b'0', b'0', b'0', NULL, NULL, NULL, NULL, NULL);
INSERT INTO `sys_menu` VALUES (55, 53, 0, 1, '', 'sys-msg-web-unread', 'msg/unread', 2, 'unread-msg', 'unread', b'0', b'0', b'0', NULL, NULL, NULL, NULL, NULL);
INSERT INTO `sys_menu` VALUES (56, 53, 0, 1, '', 'sys-msg-web-readed', 'msg/readed', 3, 'readed-msg', 'readed', b'0', b'0', b'0', NULL, NULL, NULL, NULL, NULL);

@ -1,4 +1,4 @@
INSERT INTO `sys_menu` VALUES (58, 1, 0, 1, 'i18n_timed_task', 'sys-task-dataset', 'system/task/dataset', 1001, 'task', 'dataset', b'0', b'0', b'0', 'task:read', NULL, NULL, NULL, NULL);
INSERT INTO `sys_menu` VALUES (58, 1, 0, 1, 'i18n_timed_task', 'sys-task-dataset', 'system/task/dataset', 1001, 'task', 'dataset', b'0', b'0', b'1', 'task:read', NULL, NULL, NULL, NULL);
ALTER TABLE `dataset_table_task`
ADD COLUMN `last_exec_time` BIGINT(13) NULL DEFAULT NULL COMMENT '' AFTER `create_time`,

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -8,27 +8,27 @@ COMMIT;
BEGIN;
INSERT INTO `sys_menu` VALUES (1, 0, 3, 0, '', 'system', 'Layout', 6, 'system', '/system', NULL, b'0', b'0', 'dir:sys', NULL, NULL, NULL, 1614916695777);
INSERT INTO `sys_menu` VALUES (2, 1, 4, 1, '', 'system-user', 'system/user/index', 1, 'peoples', 'user', NULL, b'0', b'0', 'user:read', NULL, NULL, NULL, 1620281952752);
INSERT INTO `sys_menu` VALUES (8, 0, 0, 1, '', 'dataset', 'dataset/index', 3, '', '/dataset', NULL, b'0', b'0', 'data:read', NULL, NULL, NULL, 1614916684821);
INSERT INTO `sys_menu` VALUES (10, 0, 0, 1, '', 'view', 'chart/index', 2, '', '/chart', NULL, b'0', b'0', 'chart:read', NULL, NULL, NULL, 1614915491036);
INSERT INTO `sys_menu` VALUES (8, 0, 0, 1, '', 'dataset', 'dataset/index', 2, '', '/dataset', NULL, b'0', b'0', 'data:read', NULL, NULL, NULL, 1614916684821);
INSERT INTO `sys_menu` VALUES (10, 0, 0, 1, '', 'view', 'chart/index', 3, '', '/chart', NULL, b'0', b'0', 'chart:read', NULL, NULL, NULL, 1614915491036);
INSERT INTO `sys_menu` VALUES (15, 2, 0, 2, '', NULL, NULL, 999, NULL, NULL, b'0', b'0', b'0', 'user:add', NULL, NULL, 1614930862373, 1614930862373);
INSERT INTO `sys_menu` VALUES (16, 2, 0, 2, '', NULL, NULL, 999, NULL, NULL, b'0', b'0', b'0', 'user:del', NULL, NULL, 1614930903502, 1614930903502);
INSERT INTO `sys_menu` VALUES (17, 2, 0, 2, '', NULL, NULL, 999, NULL, NULL, b'0', b'0', b'0', 'user:edit', NULL, NULL, 1614930935529, 1614930935529);
INSERT INTO `sys_menu` VALUES (24, 34, 0, 2, '', NULL, NULL, 997, NULL, NULL, b'0', b'0', b'0', 'datasource:add', NULL, NULL, 1614931168956, 1615783705537);
INSERT INTO `sys_menu` VALUES (28, 2, 0, 2, '', NULL, NULL, 999, NULL, NULL, b'0', b'0', b'0', 'user:editPwd', NULL, NULL, 1615275128262, 1615275128262);
INSERT INTO `sys_menu` VALUES (30, 0, 0, 1, 'Dashboard', 'panel', 'panel/index', 1, NULL, '/panel', b'0', b'0', b'0', NULL, NULL, NULL, NULL, 1619081449067);
INSERT INTO `sys_menu` VALUES (34, 0, 4, 1, '', 'datasource', 'system/datasource/index', 4, NULL, '/datasource', b'0', b'0', b'0', 'datasource:read', NULL, NULL, NULL, NULL);
INSERT INTO `sys_menu` VALUES (30, 0, 0, 1, 'Dashboard', 'panel', 'panel/index', 4, NULL, '/panel', b'0', b'0', b'0', NULL, NULL, NULL, NULL, 1619081449067);
INSERT INTO `sys_menu` VALUES (34, 0, 4, 1, '', 'datasource', 'system/datasource/index', 1, NULL, '/datasource', b'0', b'0', b'0', 'datasource:read', NULL, NULL, NULL, NULL);
INSERT INTO `sys_menu` VALUES (35, 1, 0, 1, '', 'system-user-form', 'system/user/form', 10, '', 'user-form', b'0', b'0', b'1', NULL, NULL, NULL, NULL, NULL);
INSERT INTO `sys_menu` VALUES (39, 0, 0, 1, '', 'datasource-form', 'system/datasource/form', 5, NULL, '/ds-form', b'0', b'0', b'1', NULL, NULL, NULL, NULL, NULL);
INSERT INTO `sys_menu` VALUES (40, 1, 0, 1, '', 'system-template', 'panel/template/index', 13, 'dashboard', 'panel/template/index', NULL, b'0', b'0', 'template:read', NULL, NULL, NULL, 1620444227389);
INSERT INTO `sys_menu` VALUES (40, 1, 0, 1, '', 'system-template', 'panel/template/index', 13, 'dashboard', 'panel/template/index', NULL, b'0', b'1', 'template:read', NULL, NULL, NULL, 1620444227389);
INSERT INTO `sys_menu` VALUES (50, 0, 0, 1, '', 'person-info', 'system/user/privateForm', 999, NULL, '/person-info', b'0', b'0', b'1', NULL, NULL, NULL, NULL, NULL);
INSERT INTO `sys_menu` VALUES (51, 0, 0, 1, '', 'person-pwd-reset', 'system/user/personPwd', 999, NULL, '/person-pwd', b'0', b'0', b'1', NULL, NULL, NULL, NULL, NULL);
INSERT INTO `sys_menu` VALUES (52, 0, 0, 1, '', 'about', 'system/about/index', 16, 'system', '/about', b'0', b'0', b'1', NULL, NULL, NULL, NULL, 1620897406691);
COMMIT;
BEGIN;
INSERT INTO `sys_user` VALUES (1, 0, 'admin', '', '男', NULL, 'admin@163com', '40b8893ea9ebc2d631c4bb42bb1e8996', b'1', 1, NULL, NULL, NULL, NULL, 1615184951534, 'zh_CN');
INSERT INTO `sys_user` VALUES (2, 1, 'demo', 'demo', '男', NULL, 'demo@163.com', '40b8893ea9ebc2d631c4bb42bb1e8996', b'0', 1, NULL, NULL, NULL, 1619086036234, 1622533509697, 'zh_CN');
INSERT INTO `sys_user` VALUES (1, 0, 'admin', '', '男', NULL, 'admin@163com', '1ea361fd39b4c387a63b7c4d787845a3', b'1', 1, NULL, NULL, NULL, NULL, 1615184951534, 'zh_CN');
INSERT INTO `sys_user` VALUES (2, 1, 'demo', 'demo', '男', NULL, 'demo@163.com', '1ea361fd39b4c387a63b7c4d787845a3', b'0', 1, NULL, NULL, NULL, NULL, 1622533509697, 'zh_CN');
COMMIT;

File diff suppressed because one or more lines are too long

@ -7,7 +7,8 @@
user.dir - 用户当前工作目录
java.io.tmpdir - 默认临时文件路径
-->
<diskStore path="/home/mispower/opt/dataease/data/ehcache"/>
<diskStore path="conf/data/ehcache"/>
<!--
name:缓存名称。
maxElementsInMemory:jvm缓存最大数目
@ -139,4 +140,4 @@
/>
</ehcache>
</ehcache>

@ -3,7 +3,7 @@
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration>
<!--配置数据库连接的位置-->
<properties url="file://conf/smartbi.properties"/>
<properties url="file://conf/ipsos.properties"/>
<!-- 设置mysql驱动路径 -->
<!--<classPathEntry location="/Users/liuruibin/.m2/repository/mysql/mysql-connector-java/5.1.34/mysql-connector-java-5.1.34.jar"/>-->
<!-- 此处指定生成针对MyBatis3的DAO -->

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
<property resource="application.properties"/>
<property file="conf/smartbi.properties"/>
<property file="conf/ipsos.properties"/>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d %5p %40.40c:%4L - %m%n</pattern>

@ -28,7 +28,7 @@ ORDER BY
>>
previewSql(groups, aggregators, filters, orders, table, isGroup)
previewSql(groups, aggregators, filters, orders, table, isGroup, groupBy)
::=<<
SELECT
<if(!groups && !aggregators)>
@ -51,6 +51,9 @@ WHERE
GROUP BY
<groups:{group|<if(group)><group.fieldName><endif>}; separator=",\n">
<endif>
<if(groupBy)>
<groupBy>
<endif>
<if(orders)>
ORDER BY
<orders:{order|<if(order)><order.orderAlias> <order.orderDirection><endif>}; separator=",\n">

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"adcode":120101,"name":"和平区","center":[117.195907,39.118327],"centroid":[117.196207,39.118993],"childrenNum":0,"level":"district","acroutes":[100000,120000],"parent":{"adcode":120000}},"geometry":{"type":"MultiPolygon","coordinates":[[[[117.222506,39.117484],[117.222299,39.117706],[117.219749,39.11979],[117.217625,39.121933],[117.215465,39.124525],[117.21414,39.126429],[117.21362,39.128244],[117.213457,39.130464],[117.213257,39.132029],[117.212797,39.132888],[117.211853,39.13348],[117.211038,39.133673],[117.208454,39.133394],[117.206452,39.132798],[117.202482,39.130902],[117.200039,39.130451],[117.198956,39.1305],[117.198194,39.13081],[117.196989,39.131463],[117.196034,39.132246],[117.194762,39.133612],[117.194206,39.134669],[117.193748,39.13457],[117.193202,39.134467],[117.192316,39.134329],[117.19224,39.134377],[117.19205,39.135337],[117.191868,39.135871],[117.191634,39.136081],[117.191442,39.13615],[117.190395,39.136283],[117.190395,39.136737],[117.190355,39.136844],[117.184923,39.136998],[117.181168,39.13709],[117.181003,39.133829],[117.180872,39.132361],[117.180681,39.130134],[117.180491,39.127971],[117.180301,39.126091],[117.180222,39.125279],[117.180014,39.123282],[117.179953,39.122756],[117.179901,39.122444],[117.179806,39.121257],[117.179744,39.119716],[117.179676,39.117129],[117.179659,39.114404],[117.179546,39.110206],[117.179535,39.109498],[117.179422,39.104469],[117.179292,39.10199],[117.179846,39.101975],[117.180722,39.101857],[117.181527,39.101777],[117.182402,39.101671],[117.184603,39.101654],[117.185314,39.101527],[117.186535,39.101294],[117.187956,39.101044],[117.188804,39.100943],[117.190052,39.100954],[117.190842,39.101021],[117.191568,39.101099],[117.194109,39.101441],[117.194645,39.101488],[117.195295,39.10153],[117.196291,39.101576],[117.196595,39.101624],[117.196508,39.101832],[117.19637,39.102053],[117.196187,39.102198],[117.196319,39.102307],[117.197413,39.102917],[117.197651,39.103116],[117.198189,39.103349],[117.198756,39.103794],[117.198784,39.103791],[117.199144,39.104065],[117.199147,39.104101],[117.200182,39.104914],[117.201491,39.105502],[117.202341,39.106439],[117.202991,39.107033],[117.204364,39.107998],[117.205739,39.108917],[117.207065,39.10918],[117.207619,39.109258],[117.208114,39.109374],[117.209631,39.110284],[117.210588,39.110914],[117.210756,39.110994],[117.211382,39.111424],[117.212423,39.111813],[117.213072,39.11199],[117.213118,39.11204],[117.213185,39.112207],[117.213264,39.112711],[117.213255,39.1131],[117.213273,39.113643],[117.213297,39.113694],[117.213568,39.113866],[117.215014,39.114402],[117.215803,39.114652],[117.216688,39.114779],[117.218171,39.115479],[117.219024,39.115862],[117.219893,39.116287],[117.22111,39.116822],[117.221674,39.117116],[117.222506,39.117484]]]]}}]}

@ -0,0 +1 @@
{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"adcode":120102,"name":"河东区","center":[117.226568,39.122125],"centroid":[117.256682,39.122406],"childrenNum":0,"level":"district","acroutes":[100000,120000],"parent":{"adcode":120000}},"geometry":{"type":"MultiPolygon","coordinates":[[[[117.260629,39.159009],[117.259942,39.158922],[117.259005,39.158866],[117.258248,39.158782],[117.256095,39.15867],[117.254071,39.158491],[117.253333,39.158409],[117.252543,39.158409],[117.251449,39.158309],[117.250668,39.158254],[117.249209,39.158229],[117.248723,39.158397],[117.248793,39.157894],[117.248784,39.15771],[117.248982,39.155509],[117.249286,39.154272],[117.249572,39.152134],[117.249928,39.149546],[117.249195,39.149575],[117.248607,39.149578],[117.243521,39.1497],[117.240797,39.149979],[117.234888,39.149905],[117.229545,39.149832],[117.229145,39.149784],[117.228772,39.14968],[117.228365,39.149519],[117.220923,39.144813],[117.21631,39.149808],[117.215218,39.151407],[117.215339,39.150508],[117.215312,39.14997],[117.21521,39.14951],[117.215072,39.149262],[117.214741,39.148786],[117.214221,39.148318],[117.213648,39.14797],[117.211759,39.147275],[117.207832,39.145906],[117.206402,39.145349],[117.205743,39.144917],[117.204989,39.144225],[117.204625,39.143648],[117.203845,39.142126],[117.20355,39.141284],[117.203515,39.140685],[117.20362,39.140155],[117.203896,39.139522],[117.204208,39.139229],[117.206227,39.137593],[117.207709,39.136895],[117.211107,39.135673],[117.210275,39.134233],[117.209998,39.133913],[117.209773,39.133536],[117.211038,39.133673],[117.211852,39.13348],[117.212797,39.132887],[117.213257,39.132028],[117.213456,39.130464],[117.213621,39.128244],[117.214141,39.126429],[117.215465,39.124525],[117.217625,39.121933],[117.219749,39.11979],[117.222299,39.117706],[117.22457,39.115306],[117.227606,39.111742],[117.230397,39.108344],[117.241347,39.09861],[117.242075,39.097478],[117.243454,39.093065],[117.245023,39.089246],[117.24604,39.087921],[117.246518,39.087499],[117.248558,39.086222],[117.252819,39.084064],[117.257067,39.082104],[117.260148,39.080914],[117.265491,39.079926],[117.266977,39.079796],[117.266865,39.080504],[117.266917,39.08103],[117.267108,39.082536],[117.267361,39.084209],[117.267873,39.08529],[117.269307,39.086807],[117.271176,39.088962],[117.272332,39.09053],[117.274235,39.088794],[117.275339,39.089929],[117.276339,39.090772],[117.27799,39.090707],[117.278843,39.090591],[117.278782,39.08938],[117.278843,39.088163],[117.279878,39.088542],[117.279945,39.086884],[117.285023,39.087132],[117.286093,39.087154],[117.286137,39.087525],[117.286268,39.089092],[117.28658,39.089072],[117.292922,39.087651],[117.298183,39.086475],[117.297183,39.083746],[117.298261,39.083438],[117.297991,39.082671],[117.298401,39.082548],[117.30011,39.082114],[117.301949,39.086269],[117.304819,39.085572],[117.306128,39.087938],[117.306911,39.089376],[117.307634,39.092087],[117.306907,39.092241],[117.306847,39.092418],[117.30808,39.096358],[117.306512,39.09666],[117.306459,39.097831],[117.309654,39.100946],[117.302911,39.102564],[117.294688,39.104116],[117.275914,39.108052],[117.27582,39.108069],[117.27523,39.108951],[117.274403,39.111291],[117.273953,39.112606],[117.272762,39.116906],[117.272336,39.117965],[117.271866,39.119498],[117.271276,39.121515],[117.269869,39.126367],[117.269939,39.127109],[117.270294,39.127857],[117.271103,39.128833],[117.271762,39.129324],[117.27624,39.12981],[117.281317,39.130449],[117.283326,39.130889],[117.286647,39.13174],[117.279937,39.147354],[117.284907,39.148224],[117.293404,39.15062],[117.290831,39.155546],[117.290315,39.157142],[117.287398,39.158474],[117.281389,39.160737],[117.27684,39.162999],[117.27242,39.161728],[117.271211,39.161345],[117.267301,39.160431],[117.264599,39.159687],[117.262382,39.159096],[117.261654,39.159018],[117.260629,39.159009]]]]}}]}

@ -0,0 +1 @@
{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"adcode":120103,"name":"河西区","center":[117.217536,39.101897],"centroid":[117.232522,39.072613],"childrenNum":0,"level":"district","acroutes":[100000,120000],"parent":{"adcode":120000}},"geometry":{"type":"MultiPolygon","coordinates":[[[[117.26729,39.039449],[117.267069,39.03996],[117.266953,39.040048],[117.266505,39.041231],[117.269791,39.041989],[117.272479,39.042778],[117.272532,39.042953],[117.272261,39.043423],[117.270475,39.044921],[117.268985,39.047166],[117.267691,39.050364],[117.278046,39.05354],[117.279183,39.051464],[117.280462,39.048924],[117.286822,39.051028],[117.284402,39.055491],[117.283094,39.058995],[117.280571,39.058304],[117.280475,39.059302],[117.282943,39.059446],[117.285537,39.059778],[117.288004,39.060122],[117.288473,39.0602],[117.287952,39.062467],[117.287621,39.063826],[117.2871,39.066071],[117.286543,39.067156],[117.285891,39.06894],[117.285839,39.069735],[117.285995,39.070468],[117.286205,39.07076],[117.286674,39.071286],[117.288701,39.072478],[117.292076,39.075414],[117.292423,39.07587],[117.29245,39.077424],[117.284945,39.077747],[117.277807,39.078765],[117.274304,39.07935],[117.267986,39.079705],[117.265492,39.079926],[117.260149,39.080914],[117.257067,39.082104],[117.25282,39.084064],[117.248557,39.086223],[117.246518,39.0875],[117.24604,39.087921],[117.245023,39.089246],[117.243454,39.093064],[117.242074,39.097477],[117.241346,39.098611],[117.230398,39.108343],[117.227605,39.111742],[117.224571,39.115306],[117.222506,39.117484],[117.221674,39.117117],[117.22111,39.116822],[117.219892,39.116287],[117.219024,39.115861],[117.218171,39.115478],[117.216687,39.114778],[117.215804,39.114652],[117.215013,39.114402],[117.213568,39.113866],[117.213273,39.113643],[117.213264,39.112711],[117.213184,39.112207],[117.213072,39.11199],[117.212422,39.111813],[117.211382,39.111424],[117.210756,39.110994],[117.210588,39.110914],[117.209631,39.110284],[117.208114,39.109373],[117.207618,39.109258],[117.207065,39.10918],[117.205738,39.108917],[117.204364,39.107998],[117.202991,39.107033],[117.202341,39.106439],[117.201491,39.105502],[117.200182,39.104914],[117.199147,39.104101],[117.199145,39.104065],[117.198756,39.103794],[117.198189,39.103349],[117.19765,39.103116],[117.197413,39.102918],[117.196318,39.102307],[117.196188,39.102198],[117.196369,39.102054],[117.196595,39.101623],[117.196291,39.101576],[117.195295,39.10153],[117.194108,39.10144],[117.191568,39.101099],[117.190842,39.101021],[117.190051,39.100953],[117.188804,39.100943],[117.187956,39.101044],[117.186535,39.101293],[117.185314,39.101527],[117.184603,39.101654],[117.182402,39.101671],[117.181528,39.101777],[117.180722,39.101857],[117.179845,39.101975],[117.179292,39.10199],[117.179248,39.10103],[117.179232,39.09918],[117.17923,39.098012],[117.179213,39.097483],[117.179065,39.097291],[117.179082,39.09605],[117.17911,39.095324],[117.179239,39.094067],[117.179334,39.09326],[117.179394,39.092613],[117.179463,39.092096],[117.179688,39.089798],[117.179723,39.089329],[117.17993,39.088048],[117.18019,39.086771],[117.180658,39.084751],[117.181082,39.083112],[117.181541,39.081277],[117.18213,39.078706],[117.182452,39.077016],[117.182728,39.075623],[117.183066,39.074205],[117.183465,39.072876],[117.18382,39.072002],[117.184096,39.07148],[117.184451,39.070993],[117.185456,39.069719],[117.185863,39.069314],[117.187007,39.068465],[117.187491,39.067999],[117.187864,39.067682],[117.188532,39.066925],[117.189005,39.067091],[117.192075,39.068052],[117.196286,39.069329],[117.203879,39.071719],[117.204902,39.07057],[117.208524,39.066513],[117.212477,39.062056],[117.214145,39.060193],[117.213847,39.06007],[117.213334,39.059961],[117.212746,39.06002],[117.211884,39.060401],[117.21158,39.060472],[117.211352,39.060467],[117.211204,39.060356],[117.211172,39.060245],[117.211152,39.05842],[117.211184,39.058155],[117.211444,39.057766],[117.211747,39.057592],[117.212668,39.057234],[117.213089,39.057137],[117.215178,39.057181],[117.216943,39.057065],[117.217713,39.056218],[117.217784,39.053223],[117.217725,39.034319],[117.218849,39.034103],[117.221346,39.033657],[117.222965,39.033469],[117.229496,39.03307],[117.232907,39.033152],[117.233742,39.033259],[117.234043,39.033194],[117.234148,39.033362],[117.234228,39.033205],[117.23457,39.03337],[117.243159,39.034847],[117.250115,39.036267],[117.251907,39.036993],[117.253,39.037226],[117.2542,39.03716],[117.259906,39.038062],[117.26729,39.039449]]]]}}]}

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"adcode":120105,"name":"河北区","center":[117.201569,39.156632],"centroid":[117.213791,39.167182],"childrenNum":0,"level":"district","acroutes":[100000,120000],"parent":{"adcode":120000}},"geometry":{"type":"MultiPolygon","coordinates":[[[[117.233479,39.193053],[117.23228,39.192072],[117.229662,39.18999],[117.224709,39.185531],[117.22398,39.184968],[117.223234,39.185771],[117.221941,39.184696],[117.219982,39.186448],[117.216116,39.191282],[117.213809,39.189857],[117.212702,39.190727],[117.211886,39.191553],[117.211827,39.191717],[117.211723,39.191754],[117.21077,39.192926],[117.210712,39.192959],[117.209953,39.192613],[117.206701,39.190881],[117.204246,39.189603],[117.203495,39.189196],[117.202718,39.188822],[117.199953,39.187383],[117.199165,39.18694],[117.197264,39.186103],[117.191919,39.191924],[117.18996,39.190838],[117.1886,39.190234],[117.183739,39.189147],[117.183512,39.189103],[117.182656,39.190352],[117.181772,39.190328],[117.180478,39.189418],[117.180482,39.189301],[117.1812,39.188383],[117.179528,39.187974],[117.17712,39.187427],[117.17368,39.186699],[117.171782,39.186309],[117.169789,39.185803],[117.169373,39.185665],[117.168905,39.185427],[117.168636,39.185172],[117.168056,39.184512],[117.167553,39.184001],[117.170248,39.182381],[117.171149,39.181823],[117.172093,39.181508],[117.173081,39.181423],[117.176009,39.181957],[117.176773,39.182074],[117.177223,39.182042],[117.177664,39.181954],[117.178063,39.181671],[117.17848,39.180948],[117.178738,39.179954],[117.178808,39.178512],[117.178677,39.176858],[117.178304,39.174236],[117.178408,39.173388],[117.178633,39.172575],[117.179785,39.170172],[117.179941,39.169707],[117.180028,39.169182],[117.180044,39.168413],[117.179603,39.167293],[117.178842,39.1666],[117.177168,39.165616],[117.176129,39.165024],[117.175825,39.164768],[117.175721,39.164374],[117.175903,39.163622],[117.176622,39.162574],[117.177176,39.162056],[117.178893,39.160924],[117.18195,39.15909],[117.18492,39.156656],[117.186481,39.155099],[117.189167,39.151941],[117.190466,39.150332],[117.193082,39.148381],[117.193836,39.147643],[117.194442,39.146993],[117.194737,39.146454],[117.194928,39.145199],[117.194356,39.140028],[117.194008,39.136441],[117.194008,39.135251],[117.194207,39.134669],[117.194761,39.133612],[117.196035,39.132246],[117.19699,39.131463],[117.198193,39.13081],[117.198956,39.1305],[117.200039,39.130451],[117.202482,39.130902],[117.206452,39.132798],[117.208455,39.133394],[117.209773,39.133536],[117.209998,39.133914],[117.210275,39.134234],[117.211107,39.135673],[117.207708,39.136896],[117.206226,39.137593],[117.204209,39.139229],[117.203896,39.139522],[117.203619,39.140155],[117.203515,39.140685],[117.20355,39.141284],[117.203845,39.142126],[117.204626,39.143648],[117.204989,39.144226],[117.205742,39.144916],[117.206402,39.145349],[117.207832,39.145907],[117.211759,39.147274],[117.213648,39.14797],[117.214221,39.148318],[117.214741,39.148785],[117.215072,39.149262],[117.215209,39.14951],[117.215313,39.14997],[117.21534,39.150508],[117.215218,39.151408],[117.21631,39.149808],[117.220922,39.144812],[117.221189,39.144979],[117.228365,39.14952],[117.228772,39.14968],[117.229145,39.149784],[117.229545,39.149832],[117.234887,39.149905],[117.240796,39.149979],[117.243521,39.149699],[117.248607,39.149578],[117.249194,39.149575],[117.249928,39.149546],[117.249572,39.152134],[117.249285,39.154271],[117.248983,39.155509],[117.248784,39.15771],[117.248793,39.157894],[117.248723,39.158397],[117.249209,39.158228],[117.250669,39.158253],[117.251449,39.15831],[117.252543,39.158409],[117.253333,39.158409],[117.25407,39.158492],[117.256094,39.15867],[117.258248,39.158783],[117.259004,39.158866],[117.259942,39.158922],[117.260629,39.159009],[117.260456,39.163268],[117.260534,39.167551],[117.260421,39.16809],[117.260266,39.168398],[117.260056,39.168711],[117.258658,39.169958],[117.256905,39.169032],[117.2564,39.168597],[117.25606,39.16825],[117.255439,39.168163],[117.255029,39.16814],[117.253907,39.168111],[117.251703,39.168094],[117.251059,39.169649],[117.250782,39.170908],[117.246736,39.170414],[117.246519,39.171378],[117.242111,39.170925],[117.240956,39.170751],[117.241841,39.17129],[117.242699,39.171914],[117.243691,39.172739],[117.245184,39.17418],[117.247553,39.176452],[117.249966,39.178452],[117.249616,39.178696],[117.249352,39.178819],[117.24829,39.179612],[117.247268,39.180572],[117.24586,39.181871],[117.244932,39.182763],[117.244621,39.183106],[117.244481,39.183196],[117.242927,39.184603],[117.241616,39.18577],[117.240353,39.186874],[117.239597,39.187429],[117.238136,39.188721],[117.237044,39.189841],[117.235075,39.191679],[117.233862,39.192696],[117.233479,39.193053]]]]}}]}

@ -0,0 +1 @@
{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"adcode":120106,"name":"红桥区","center":[117.163301,39.175066],"centroid":[117.155648,39.164723],"childrenNum":0,"level":"district","acroutes":[100000,120000],"parent":{"adcode":120000}},"geometry":{"type":"MultiPolygon","coordinates":[[[[117.194442,39.146993],[117.193836,39.147643],[117.193082,39.148381],[117.190466,39.150332],[117.189166,39.151941],[117.186481,39.155099],[117.18492,39.156656],[117.18195,39.15909],[117.178893,39.160924],[117.177176,39.162056],[117.176622,39.162574],[117.175903,39.163622],[117.17572,39.164374],[117.175825,39.164768],[117.17613,39.165024],[117.177168,39.165616],[117.178842,39.1666],[117.179603,39.167293],[117.180044,39.168414],[117.180028,39.169182],[117.179941,39.169707],[117.179785,39.170172],[117.178634,39.172575],[117.178408,39.173389],[117.178303,39.174236],[117.178676,39.176858],[117.178808,39.178512],[117.178738,39.179954],[117.17848,39.180948],[117.178063,39.181671],[117.177664,39.181954],[117.177223,39.182042],[117.176772,39.182073],[117.176009,39.181957],[117.173082,39.181424],[117.172093,39.181508],[117.171149,39.181823],[117.170247,39.182381],[117.167553,39.184001],[117.167077,39.184249],[117.163931,39.185753],[117.162571,39.186694],[117.161948,39.187277],[117.161601,39.187773],[117.161106,39.189428],[117.160657,39.189989],[117.16004,39.190237],[117.159296,39.190348],[117.154963,39.189951],[117.148566,39.189097],[117.147743,39.189068],[117.146867,39.189156],[117.146051,39.189357],[117.145489,39.189623],[117.145124,39.189984],[117.144786,39.190401],[117.144024,39.191901],[117.143252,39.191676],[117.142316,39.19136],[117.141762,39.191126],[117.139247,39.18961],[117.138015,39.188573],[117.136775,39.187824],[117.136057,39.18718],[117.135815,39.187022],[117.135231,39.186462],[117.134311,39.185351],[117.133228,39.183216],[117.131135,39.178866],[117.130807,39.178016],[117.130633,39.177374],[117.130503,39.176692],[117.130451,39.175536],[117.130365,39.173951],[117.129895,39.171906],[117.129652,39.171038],[117.129392,39.170165],[117.129157,39.169435],[117.128905,39.168585],[117.128612,39.167398],[117.127892,39.164654],[117.127413,39.162962],[117.127213,39.162168],[117.12698,39.161325],[117.126667,39.160395],[117.126433,39.159458],[117.126318,39.158924],[117.126285,39.158273],[117.126433,39.157812],[117.126658,39.156891],[117.126865,39.156123],[117.127239,39.154889],[117.127594,39.154107],[117.127941,39.153169],[117.128279,39.152526],[117.128479,39.152243],[117.128965,39.152294],[117.129797,39.152086],[117.130673,39.151476],[117.131541,39.150494],[117.133648,39.147942],[117.134273,39.147338],[117.134984,39.146915],[117.135807,39.146642],[117.136761,39.146467],[117.140022,39.147105],[117.142909,39.148066],[117.14376,39.148316],[117.144321,39.148577],[117.145414,39.147697],[117.145537,39.147415],[117.145647,39.146333],[117.145527,39.146081],[117.144729,39.145453],[117.144018,39.144368],[117.144034,39.144173],[117.144122,39.144068],[117.145595,39.144053],[117.147919,39.143364],[117.150545,39.143073],[117.151915,39.142723],[117.152366,39.14257],[117.152626,39.142531],[117.154177,39.142385],[117.155251,39.142314],[117.15617,39.142212],[117.15721,39.142002],[117.15773,39.141554],[117.158023,39.14118],[117.159073,39.141496],[117.159567,39.141577],[117.160234,39.141589],[117.161665,39.141595],[117.165096,39.141663],[117.171836,39.141937],[117.171681,39.146467],[117.174047,39.146319],[117.180619,39.146148],[117.180991,39.146073],[117.181273,39.146132],[117.185538,39.145935],[117.189027,39.145866],[117.189946,39.14589],[117.190587,39.145967],[117.192684,39.146449],[117.193559,39.146661],[117.194442,39.146993]]],[[[117.13036,39.189872],[117.133173,39.191312],[117.133323,39.191036],[117.135416,39.192016],[117.136057,39.192307],[117.135855,39.192685],[117.136416,39.192848],[117.140771,39.193229],[117.1406,39.194444],[117.138788,39.196467],[117.140022,39.19715],[117.140366,39.197325],[117.140805,39.197511],[117.141212,39.197742],[117.139547,39.200147],[117.138644,39.199849],[117.138366,39.200356],[117.138192,39.20103],[117.135909,39.200032],[117.134964,39.201172],[117.133827,39.20266],[117.132851,39.202302],[117.132036,39.203466],[117.125617,39.200879],[117.126304,39.199891],[117.12566,39.1996],[117.128575,39.195657],[117.125945,39.194942],[117.127223,39.193163],[117.127702,39.192706],[117.128705,39.191432],[117.129263,39.190684],[117.130004,39.190102],[117.13036,39.189872]]]]}}]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"adcode":130102,"name":"长安区","center":[114.548151,38.047501],"centroid":[114.583482,38.080599],"childrenNum":0,"level":"district","acroutes":[100000,130000,130100],"parent":{"adcode":130100}},"geometry":{"type":"MultiPolygon","coordinates":[[[[114.536771,38.127953],[114.533376,38.129304],[114.529779,38.130409],[114.526714,38.13107],[114.523427,38.131471],[114.522627,38.131659],[114.521273,38.132405],[114.520616,38.132386],[114.518814,38.131541],[114.517501,38.131379],[114.51566,38.131367],[114.512934,38.131608],[114.511321,38.131619],[114.509717,38.131817],[114.507313,38.131759],[114.504809,38.131352],[114.503623,38.130868],[114.48411,38.114064],[114.489056,38.113343],[114.487527,38.112643],[114.486186,38.111775],[114.48578,38.111707],[114.485312,38.106728],[114.485019,38.106623],[114.480867,38.10667],[114.480331,38.106472],[114.480168,38.106238],[114.480202,38.10597],[114.482208,38.102943],[114.489356,38.102366],[114.490826,38.102393],[114.492167,38.102724],[114.495132,38.104546],[114.494882,38.101639],[114.495116,38.101639],[114.494725,38.096923],[114.494932,38.091932],[114.493357,38.082764],[114.502141,38.081578],[114.498717,38.072558],[114.498215,38.07256],[114.494323,38.055938],[114.494521,38.05573],[114.493398,38.049757],[114.492583,38.043611],[114.492735,38.04339],[114.493798,38.043457],[114.498808,38.043314],[114.501255,38.04339],[114.502175,38.043042],[114.502846,38.042843],[114.503207,38.042636],[114.503886,38.042517],[114.503932,38.042437],[114.504847,38.04251],[114.505079,38.042399],[114.50524,38.042556],[114.505999,38.042577],[114.506199,38.042737],[114.506745,38.042758],[114.507301,38.042619],[114.507822,38.042758],[114.507753,38.043003],[114.508262,38.043016],[114.508392,38.042745],[114.509301,38.042652],[114.51031,38.042695],[114.510314,38.042353],[114.510689,38.04215],[114.511825,38.042119],[114.511868,38.035595],[114.517726,38.035701],[114.522865,38.035754],[114.524301,38.035781],[114.526235,38.035855],[114.531931,38.035958],[114.53277,38.035942],[114.535073,38.036017],[114.591154,38.0371],[114.591313,38.055922],[114.591174,38.058887],[114.609944,38.054698],[114.67704,38.041433],[114.676597,38.04236],[114.67622,38.042784],[114.676406,38.046182],[114.678313,38.045975],[114.678928,38.046291],[114.679019,38.051584],[114.679355,38.05158],[114.679274,38.053839],[114.681716,38.059273],[114.683645,38.058276],[114.684138,38.060488],[114.687574,38.060046],[114.687724,38.061481],[114.687683,38.06239],[114.689744,38.064666],[114.691191,38.065332],[114.693047,38.065169],[114.694547,38.063536],[114.695378,38.063386],[114.699366,38.070146],[114.705096,38.078554],[114.707378,38.091356],[114.707253,38.091554],[114.705417,38.091739],[114.705462,38.0939],[114.705117,38.094168],[114.703794,38.094157],[114.703781,38.097203],[114.693852,38.097153],[114.69342,38.102353],[114.680921,38.101245],[114.673173,38.099604],[114.663798,38.10284],[114.656871,38.103098],[114.65334,38.104175],[114.647498,38.105929],[114.641297,38.10807],[114.633958,38.109545],[114.621039,38.110268],[114.611199,38.109227],[114.599986,38.111299],[114.596089,38.113045],[114.592133,38.115598],[114.589925,38.116472],[114.588441,38.116538],[114.582674,38.115735],[114.577319,38.115846],[114.571416,38.116388],[114.566331,38.117653],[114.561623,38.120305],[114.556227,38.121699],[114.550674,38.122497],[114.547463,38.123208],[114.544305,38.124575],[114.541729,38.126044],[114.539781,38.126687],[114.536771,38.127953]]]]}}]}

@ -0,0 +1 @@
{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"adcode":130104,"name":"桥西区","center":[114.462931,38.028383],"centroid":[114.449351,38.025685],"childrenNum":0,"level":"district","acroutes":[100000,130000,130100],"parent":{"adcode":130100}},"geometry":{"type":"MultiPolygon","coordinates":[[[[114.376652,38.073279],[114.377209,38.07012],[114.378591,38.067296],[114.380319,38.065448],[114.381247,38.063486],[114.382845,38.063403],[114.382894,38.062493],[114.385204,38.062215],[114.385347,38.056901],[114.385246,38.056528],[114.384592,38.056534],[114.388193,38.052608],[114.386613,38.052655],[114.386632,38.048601],[114.384258,38.048315],[114.384305,38.045992],[114.38433,38.045884],[114.38628,38.042742],[114.389019,38.041083],[114.392771,38.041056],[114.39332,38.039724],[114.393333,38.038643],[114.397208,38.038449],[114.397645,38.037592],[114.397725,38.036246],[114.398335,38.035864],[114.398421,38.034413],[114.395963,38.027892],[114.395845,38.024808],[114.398187,38.022852],[114.399195,38.02241],[114.402154,38.020863],[114.404275,38.02051],[114.405612,38.020787],[114.407693,38.02156],[114.408686,38.021627],[114.409142,38.021437],[114.409852,38.020665],[114.411035,38.016444],[114.41158,38.015359],[114.412473,38.014605],[114.414956,38.014434],[114.417384,38.014752],[114.419357,38.012109],[114.426236,38.012464],[114.428007,38.011203],[114.428194,38.010035],[114.427846,38.005767],[114.425836,38.00411],[114.425204,38.004074],[114.425981,38.003039],[114.42486,38.002975],[114.424742,38.002643],[114.424913,38.001776],[114.425821,38.00114],[114.425775,37.998899],[114.427485,37.996154],[114.427899,37.996265],[114.427692,37.997502],[114.4286,37.998018],[114.428827,37.995139],[114.431087,37.995117],[114.431559,37.994722],[114.431519,37.992657],[114.432534,37.992645],[114.432486,37.994286],[114.433338,37.994292],[114.434231,37.994515],[114.437906,37.994779],[114.438001,37.993959],[114.451331,37.994549],[114.451483,37.994046],[114.451482,37.992147],[114.459957,37.990827],[114.460498,37.990234],[114.461136,37.98421],[114.462785,37.98428],[114.463343,37.981185],[114.459754,37.979462],[114.455303,37.979447],[114.45549,37.97931],[114.458266,37.979232],[114.458131,37.976926],[114.461788,37.974222],[114.464227,37.974285],[114.468329,37.973975],[114.468668,37.972421],[114.470157,37.972268],[114.472917,37.97238],[114.472273,37.97343],[114.474582,37.973868],[114.474985,37.976623],[114.478645,37.976934],[114.481619,37.976486],[114.482098,37.977205],[114.484768,37.977365],[114.485772,37.975903],[114.490425,37.974015],[114.490082,37.975861],[114.496233,37.976757],[114.492508,37.998656],[114.493175,37.998787],[114.492372,38.001429],[114.492214,38.002106],[114.493825,38.002725],[114.494421,38.003085],[114.495331,38.003979],[114.49808,38.006755],[114.49913,38.007739],[114.500143,38.008779],[114.512256,38.020849],[114.51219,38.021645],[114.512217,38.022298],[114.51211,38.026404],[114.512058,38.027335],[114.512064,38.028252],[114.512119,38.028271],[114.512022,38.029784],[114.511868,38.035595],[114.511825,38.04212],[114.510689,38.04215],[114.510314,38.042353],[114.510309,38.042695],[114.509301,38.042652],[114.508391,38.042745],[114.508263,38.043017],[114.507753,38.043002],[114.507822,38.042757],[114.507303,38.042619],[114.506744,38.042757],[114.506199,38.042738],[114.505999,38.042577],[114.50524,38.042556],[114.505079,38.0424],[114.504643,38.042526],[114.50393,38.042438],[114.503887,38.042518],[114.503206,38.042636],[114.502845,38.042843],[114.502177,38.043043],[114.501255,38.04339],[114.498808,38.043314],[114.493798,38.043457],[114.492736,38.04339],[114.492584,38.043611],[114.490327,38.043459],[114.489045,38.043407],[114.484353,38.043448],[114.484467,38.045014],[114.481007,38.045069],[114.477263,38.044879],[114.477263,38.045663],[114.469547,38.045509],[114.469523,38.047826],[114.469364,38.047896],[114.462083,38.048234],[114.454392,38.048492],[114.454126,38.048537],[114.451399,38.048629],[114.451159,38.048597],[114.44968,38.048688],[114.44885,38.048673],[114.446036,38.048765],[114.439525,38.049077],[114.437997,38.049242],[114.436736,38.049211],[114.435851,38.049253],[114.434839,38.052581],[114.434751,38.053181],[114.434751,38.054266],[114.43489,38.055516],[114.436641,38.063706],[114.432907,38.064631],[114.426511,38.065826],[114.405197,38.069501],[114.397429,38.070835],[114.386512,38.072704],[114.376652,38.073279]]]]}}]}

@ -0,0 +1 @@
{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"adcode":130105,"name":"新华区","center":[114.465974,38.067142],"centroid":[114.447636,38.099975],"childrenNum":0,"level":"district","acroutes":[100000,130000,130100],"parent":{"adcode":130100}},"geometry":{"type":"MultiPolygon","coordinates":[[[[114.492584,38.043611],[114.493398,38.049756],[114.494521,38.05573],[114.494323,38.055938],[114.498215,38.07256],[114.498717,38.072558],[114.502141,38.081577],[114.493357,38.082763],[114.494932,38.091932],[114.494725,38.096923],[114.495115,38.101638],[114.494882,38.101638],[114.495132,38.104546],[114.492166,38.102723],[114.490826,38.102393],[114.489357,38.102367],[114.482207,38.102943],[114.480201,38.105969],[114.480167,38.106237],[114.480331,38.106472],[114.480867,38.10667],[114.485018,38.106623],[114.485311,38.106728],[114.485778,38.111707],[114.486186,38.111776],[114.487526,38.112644],[114.489057,38.113343],[114.48411,38.114064],[114.501874,38.129363],[114.501523,38.129686],[114.502489,38.130335],[114.502079,38.130803],[114.500526,38.131615],[114.500148,38.132459],[114.501236,38.138232],[114.498671,38.14157],[114.497644,38.142002],[114.496072,38.141965],[114.494288,38.141581],[114.494393,38.140739],[114.491167,38.140538],[114.481589,38.142197],[114.482211,38.145144],[114.476834,38.146114],[114.474497,38.145917],[114.463968,38.15264],[114.452959,38.160762],[114.450836,38.164218],[114.448647,38.16647],[114.445688,38.168145],[114.438662,38.162307],[114.433407,38.155783],[114.428076,38.148337],[114.426256,38.146279],[114.424454,38.14712],[114.423288,38.146901],[114.422547,38.141412],[114.418824,38.140981],[114.415276,38.137791],[114.414839,38.136347],[114.414335,38.136119],[114.413751,38.135404],[114.414036,38.131395],[114.412169,38.129511],[114.410157,38.129496],[114.408883,38.126623],[114.409603,38.11769],[114.410434,38.117333],[114.416655,38.117997],[114.417137,38.113599],[114.417608,38.111615],[114.416781,38.110921],[114.416581,38.110119],[114.416312,38.10958],[114.40363,38.108036],[114.40343,38.106527],[114.402622,38.106193],[114.400478,38.105519],[114.398056,38.105319],[114.396719,38.106255],[114.395035,38.106658],[114.387141,38.106548],[114.379167,38.105762],[114.378663,38.104456],[114.378392,38.104017],[114.377994,38.103614],[114.376777,38.103109],[114.375769,38.102808],[114.375333,38.102304],[114.3751,38.101866],[114.375065,38.101128],[114.375369,38.100056],[114.375768,38.099584],[114.376211,38.09942],[114.38192,38.09956],[114.382223,38.099192],[114.382423,38.098754],[114.382562,38.091773],[114.382493,38.090092],[114.382622,38.089711],[114.383197,38.089473],[114.383361,38.089104],[114.383395,38.088132],[114.383162,38.086557],[114.382402,38.085333],[114.382153,38.085076],[114.381753,38.085011],[114.37488,38.085328],[114.374271,38.084988],[114.376018,38.076703],[114.376652,38.073279],[114.386511,38.072704],[114.397429,38.070836],[114.405198,38.0695],[114.426512,38.065826],[114.432907,38.064632],[114.436641,38.063707],[114.434891,38.055516],[114.434751,38.054265],[114.434751,38.053182],[114.434838,38.052581],[114.435851,38.049253],[114.436736,38.049211],[114.437996,38.049242],[114.439526,38.049077],[114.446037,38.048765],[114.44885,38.048673],[114.449679,38.048688],[114.451159,38.048597],[114.4514,38.048629],[114.454126,38.048537],[114.454391,38.048492],[114.462083,38.048235],[114.469364,38.047895],[114.469524,38.047826],[114.469547,38.045509],[114.477263,38.045663],[114.477263,38.044878],[114.481007,38.045069],[114.484465,38.045014],[114.484354,38.043448],[114.489044,38.043407],[114.490327,38.043458],[114.492584,38.043611]]]]}}]}

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"adcode":130108,"name":"裕华区","center":[114.533257,38.027696],"centroid":[114.584117,38.009464],"childrenNum":0,"level":"district","acroutes":[100000,130000,130100],"parent":{"adcode":130100}},"geometry":{"type":"MultiPolygon","coordinates":[[[[114.490425,37.974015],[114.498575,37.970461],[114.498292,37.971851],[114.505773,37.973048],[114.506112,37.970992],[114.507485,37.969415],[114.511847,37.969952],[114.511601,37.971798],[114.520877,37.972294],[114.52029,37.968858],[114.529028,37.969348],[114.529926,37.969314],[114.552554,37.970908],[114.552999,37.968227],[114.557419,37.968432],[114.557285,37.970129],[114.557793,37.970999],[114.558585,37.971596],[114.560203,37.971845],[114.561655,37.971772],[114.561401,37.974149],[114.565555,37.973645],[114.565979,37.973667],[114.566014,37.974581],[114.572726,37.973977],[114.574541,37.97456],[114.574793,37.979878],[114.579061,37.980204],[114.578986,37.978651],[114.583062,37.978686],[114.584109,37.976547],[114.584327,37.973453],[114.586937,37.972204],[114.591802,37.972095],[114.593201,37.967899],[114.593584,37.968418],[114.592136,37.972475],[114.592702,37.973558],[114.608504,37.973343],[114.608735,37.979582],[114.608752,37.982356],[114.610411,37.982481],[114.610384,37.98564],[114.609675,37.98566],[114.609486,37.986728],[114.609696,37.988929],[114.611807,37.990757],[114.61736,37.990947],[114.61714,37.992099],[114.618182,37.992665],[114.621848,37.992758],[114.621875,37.994895],[114.625089,37.994931],[114.625257,37.997773],[114.627722,37.997657],[114.627509,37.996232],[114.627932,37.995735],[114.632653,37.995574],[114.632759,37.992366],[114.637153,37.99209],[114.639678,37.988884],[114.646192,37.985417],[114.647055,37.984873],[114.647057,37.982538],[114.647798,37.981162],[114.650112,37.980392],[114.650121,37.977126],[114.65715,37.977083],[114.657284,37.974246],[114.657381,37.974207],[114.660243,37.973828],[114.660091,37.971133],[114.669506,37.971171],[114.670338,37.969271],[114.673811,37.968953],[114.673959,37.969682],[114.670914,37.978873],[114.669743,37.984588],[114.669708,37.986381],[114.668082,37.986342],[114.668107,37.988461],[114.665796,37.988563],[114.66553,37.991703],[114.662435,37.992034],[114.658874,37.994729],[114.657082,38.000712],[114.657007,38.002725],[114.655844,38.002574],[114.655724,38.008339],[114.654126,38.010027],[114.652546,38.010014],[114.65261,38.012273],[114.655414,38.01337],[114.656859,38.015315],[114.659619,38.015622],[114.66146,38.016805],[114.662473,38.018018],[114.662418,38.019856],[114.664723,38.019766],[114.664669,38.021801],[114.667152,38.021965],[114.667013,38.024891],[114.670307,38.025894],[114.674059,38.025686],[114.674036,38.029468],[114.674989,38.029519],[114.681188,38.030326],[114.682692,38.031391],[114.681877,38.034855],[114.680712,38.03663],[114.678558,38.038167],[114.677578,38.040142],[114.677041,38.041433],[114.609944,38.054698],[114.591174,38.058887],[114.591313,38.055922],[114.591153,38.037099],[114.535073,38.036017],[114.533146,38.035953],[114.532896,38.035977],[114.532769,38.035942],[114.531931,38.035958],[114.526236,38.035855],[114.524302,38.035781],[114.522865,38.035754],[114.517726,38.035701],[114.511869,38.035595],[114.512021,38.029785],[114.512119,38.028272],[114.512063,38.028253],[114.512057,38.027336],[114.512109,38.026404],[114.512217,38.022297],[114.512188,38.021645],[114.512242,38.021337],[114.512256,38.020849],[114.502352,38.010983],[114.501558,38.010173],[114.500143,38.00878],[114.499129,38.00774],[114.49808,38.006756],[114.495331,38.003979],[114.49442,38.003085],[114.493825,38.002726],[114.492213,38.002105],[114.492373,38.001429],[114.493176,37.998788],[114.492509,37.998656],[114.496232,37.976757],[114.490082,37.97586],[114.490425,37.974015]]]]}}]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"adcode":130127,"name":"高邑县","center":[114.610699,37.605714],"centroid":[114.598306,37.616239],"childrenNum":0,"level":"district","acroutes":[100000,130000,130100],"parent":{"adcode":130100}},"geometry":{"type":"MultiPolygon","coordinates":[[[[114.725981,37.630678],[114.723282,37.634732],[114.708463,37.632776],[114.704559,37.63291],[114.70025,37.633861],[114.700114,37.637011],[114.697276,37.637424],[114.69639,37.639319],[114.696983,37.640035],[114.699284,37.638696],[114.7004,37.638926],[114.702785,37.638993],[114.705276,37.640652],[114.70551,37.643688],[114.707476,37.643575],[114.709067,37.644555],[114.709972,37.650351],[114.711648,37.650453],[114.712111,37.651374],[114.708985,37.652877],[114.708427,37.651774],[114.707504,37.65206],[114.706816,37.649208],[114.70261,37.649531],[114.699091,37.649696],[114.698929,37.644931],[114.692816,37.637654],[114.690979,37.636514],[114.691585,37.639051],[114.68995,37.640185],[114.687557,37.641107],[114.685015,37.641132],[114.685074,37.643017],[114.683984,37.642938],[114.682817,37.641991],[114.680565,37.642087],[114.677465,37.643122],[114.674224,37.644944],[114.671882,37.64946],[114.671761,37.654024],[114.669975,37.654215],[114.665466,37.655163],[114.66289,37.657632],[114.654865,37.654854],[114.652732,37.655089],[114.65277,37.655985],[114.652115,37.660775],[114.649683,37.661501],[114.648485,37.663139],[114.648465,37.664999],[114.649724,37.668501],[114.649678,37.670702],[114.64256,37.672493],[114.640188,37.672817],[114.640913,37.675588],[114.636144,37.676063],[114.637023,37.681953],[114.638342,37.681929],[114.64109,37.68775],[114.639175,37.690068],[114.637352,37.690575],[114.637843,37.693522],[114.639427,37.69426],[114.636591,37.694434],[114.635797,37.695047],[114.626559,37.695939],[114.620978,37.696749],[114.620107,37.693838],[114.615459,37.694177],[114.611688,37.692725],[114.610938,37.690507],[114.606771,37.690997],[114.606349,37.691738],[114.604876,37.691994],[114.598648,37.691195],[114.597214,37.688821],[114.591942,37.686864],[114.591248,37.685821],[114.591764,37.681049],[114.591769,37.679604],[114.590582,37.679569],[114.590484,37.677466],[114.587875,37.678222],[114.578367,37.68311],[114.57312,37.686325],[114.572681,37.686206],[114.572344,37.684912],[114.57092,37.681037],[114.570269,37.678149],[114.568167,37.679408],[114.567226,37.679117],[114.564684,37.677448],[114.56125,37.673816],[114.559478,37.673607],[114.553556,37.674108],[114.550189,37.672236],[114.548636,37.671143],[114.54833,37.667865],[114.541207,37.667629],[114.538544,37.667848],[114.538979,37.670122],[114.538449,37.670666],[114.530228,37.671318],[114.529018,37.671966],[114.525455,37.672686],[114.524823,37.672581],[114.52481,37.671663],[114.523273,37.671782],[114.523082,37.669774],[114.52336,37.666823],[114.523239,37.66087],[114.521682,37.654708],[114.519892,37.651188],[114.516564,37.646887],[114.512921,37.644306],[114.507587,37.636028],[114.50495,37.629482],[114.503158,37.622641],[114.501033,37.620439],[114.489326,37.612836],[114.478854,37.595012],[114.471312,37.590656],[114.468932,37.586569],[114.469598,37.580199],[114.473628,37.572977],[114.483478,37.576834],[114.495203,37.578539],[114.501148,37.578239],[114.519944,37.574631],[114.530622,37.570371],[114.539302,37.565867],[114.550266,37.562528],[114.565589,37.556942],[114.576259,37.554296],[114.585186,37.553011],[114.59497,37.553109],[114.603864,37.554579],[114.624279,37.556638],[114.632638,37.556733],[114.646773,37.556214],[114.660284,37.559353],[114.674926,37.564108],[114.68018,37.565269],[114.687038,37.565166],[114.687778,37.57274],[114.694868,37.581299],[114.698793,37.589365],[114.7057,37.61006],[114.707345,37.615803],[114.714848,37.617195],[114.717252,37.621409],[114.716005,37.625983],[114.71699,37.627133],[114.725981,37.630678]]]]}}]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save