@@ -28,15 +28,70 @@ namespace {
2828
2929 if (!options.is_polar_coordinate_system ) {
3030 // 平面直角座標系の判定
31- plateau::geometry::GeoReference geo_ref (options.coordinate_zone_id , options.reference_point , options.unit_scale , options.mesh_axes );
31+
32+ // plateau::geometry::GeoCoordinate refPoint = plateau::geometry::ReferencePointFactory::GetReferencePoint(options.epsg_code);
33+ // plateau::geometry::GeoReference geo_ref1(options.coordinate_zone_id);
34+ // const auto epsg_offset = geo_ref1.getOffset(options.epsg_code);
35+ // geo_ref1.setReferencePoint(epsg_offset);
36+
37+ plateau::geometry::GeoReference geo_ref2 (options.coordinate_zone_id , options.reference_point , options.unit_scale , options.mesh_axes );
38+ const auto epsg_offset = geo_ref2.getOffset (options.epsg_code );
39+
40+ // const auto diff = options.reference_point - epsg_offset;
41+ // plateau::geometry::GeoReference geo_ref3(options.coordinate_zone_id, options.reference_point - diff , options.unit_scale, options.mesh_axes);
42+
43+ const auto meshcode_offset = GeoReference::convertAxisToENU (options.mesh_axes , options.reference_point );
44+ // const auto original_ref = geo_ref2.unproject(options.reference_point);
45+
46+ plateau::geometry::GeoReference geo_ref3 (options.coordinate_zone_id , TVec3d (), options.unit_scale , options.mesh_axes );
47+ const auto original_ref = geo_ref3.unproject (options.reference_point );
48+
49+ plateau::geometry::GeoReference geo (options.coordinate_zone_id );
50+ GeoCoordinate ref_point = ReferencePointFactory::GetReferencePoint (options.epsg_code ); // EPSGの基準点
51+ const auto prj = geo.project (ref_point);
52+ plateau::geometry::GeoReference geo_ref4 (options.coordinate_zone_id , prj, options.unit_scale );
53+
54+ plateau::geometry::GeoReference geo2 (options.coordinate_zone_id );
55+ GeoCoordinate ref_point2 (37.4258 , 138.7378 , 0 ); // 08EE751の中心
56+ const auto prj2 = geo2.project (ref_point2);
57+ plateau::geometry::GeoReference geo_ref5 (options.coordinate_zone_id , prj2, options.unit_scale );
58+
59+ plateau::geometry::GeoReference geo3 (options.coordinate_zone_id );
60+ GeoCoordinate ref_point3 (36 , 138.5 , 0 ); // EPSG:10169 の基準点
61+ const auto prj3 = geo3.project (ref_point3);
62+ plateau::geometry::GeoReference geo_ref6 (options.coordinate_zone_id , prj3, options.unit_scale );
63+
3264 try {
33- auto pos = geo_ref.unproject (PolygonMeshUtils::cityObjPos (city_obj));
65+ const auto pos = PolygonMeshUtils::cityObjPos (city_obj);
66+
67+ const auto unprojected = geo_ref4.unproject (pos);
68+
69+ const auto unprojected1 = geo_ref2.unproject (pos + epsg_offset);
70+ // const auto unprojected2 = geo_ref2.unproject(epsg_offset - pos);
71+ // const auto unprojected2 = geo_ref2.unproject(pos);
72+ // const auto unprojected3 = geo_ref4.unproject(pos + epsg_offset);
73+
74+ const auto unprojected4 = geo_ref5.unproject (pos + epsg_offset);
75+ // const auto unprojected5 = geo_ref5.unproject(epsg_offset- pos);
76+
77+ const auto unprojected5 = geo_ref6.unproject (pos + epsg_offset);
78+
3479 for (const auto & extent : extents) {
35- if (extent.contains (pos ))
80+ if (extent.contains (unprojected1 ))
3681 return false ;
3782 }
83+
84+ // auto pos = PolygonMeshUtils::cityObjPos(city_obj);
85+ // for (const auto& extent : extents) {
86+ // if (extent.contains(geo_ref.unproject(pos)))
87+ // return false;
88+ // }
3889 }
3990 catch (std::invalid_argument& e) {}
91+
92+ // Temp Debug =======================
93+ // return false;
94+ // Temp Debug =======================
4095 }
4196 else {
4297 for (const auto & extent : extents) {
0 commit comments