1
장애인ㆍ노인ㆍ임산부 등의 편의증진 보장에 관한 법률 시행규칙 제 별표1조
1. 장애인등의 통행이 가능한 접근로
가. 유효폭 및 활동공간
(1) 휠체어사용자가 통행할 수 있도록 접근로의 유효폭은 1.2미터 이상으로 하여야 한다.
(2) 휠체어사용자가 다른 휠체어 또는 유모차 등과 교행할 수 있도록 50미터마다 1.5미터×1.5미터 이상의 교행구역을 설치할 수 있다.
(3) 경사진 접근로가 연속될 경우에는 휠체어사용자가 휴식할 수 있도록 30미터마다 1.5미터×1.5미터 이상의 수평면으로 된 참을 설치할
//장애인ㆍ노인ㆍ임산부 등의 편의증진보장에 관한 법률 시행규칙 별표1 편의시설의 구조·재질등에 관한 세부기준(제2조제1항관련)
Check(ERCDAPA_2_1_*_1_4_나_1){
IF (CS1 THEN KS1) OR (CS2 THEN KS2)
ParkingUnit myParkingUnit {
isObjectProperty(ParkingUnit .isParallelParking) = TRUE
}
CS1{
isObjectProperty(ParkingUnit .isParallelParking) = TRUE
}
KS1{
getObjectWidth(ParkingLotArea.isHandicapParking, a) >= 3.3 m
getElementLength(ParkingLotArea.isHandicapParking) >= 5 m
}
CS2{
isObjectProperty(ParkingLotArea.isParallelParking) = FALSE
}
KS2{
getObjectWidth(ParkingLotArea.isHandicapParking, a) >= 2 m
getElementLength(ParkingLotArea.isHandicapParking) >= 6 m
}
}
check(ERCDAPA_2_1_*_1_4_나_2){
getObjectGradient(ParkingSpace.Floor) <= 1/50
}
check(ERCDAPA_2_1_*_1_6_가_1){
Door myDoor1{
isObjectProperty(Door.isEntrance) = TRUE
}
Door myDoor2{
isObjectProperty(Door.isEntrance) = TRUE
getObject(Door.isEntrance) != getObject(myDoor1)
}
getObjectWidth(Door.isEntrance) >= 0.8 m
isEgressDirection(myDoor1) = isEgressDirection(myDoor2)
getObjectDistance(myDoor1, myDoor2) >= 1.2 m
}
check(ERCDAPA_2_1_*_1_6_가_2){
isObjectProperty(Door.isAutomatic) = FALSE
isObjectProperty(Door.isSillFree) = TRUE
}
check(ERCDAPA_2_1_*_1_8_가_2){
getObjectVerticalDistance(FloorSurface,Door.Bottom)
}
check(ERCDAPA_2_1_*_1_8_나){
Stair myStair{
isObjectProperty(Stair.isEscape) = TRUE
isObjectProperty(Stair.isOutdoor) = TRUE
}
getObjectWidth(myStair) >= 0.9 m
getObjectWidth(myStair.StairLanding) >= 0.9 m
Stair myStair2{
isObjectProperty(Stair.isEscape) = FALSE
isObjectProperty(Stair.isOutdoor) = FALSE
}
getObjectWidth(myStair2) >= 1.2 m
getObjectWidth(myStair2.StairLanding) >= 1.2 m
}
check(ERCDAPA_2_1_*_1_8_다_1){
hasObject(Stair, VerticalSurfaceStair) = TRUE
}
check(ERCDAPA_2_1_*_1_8_다_2){
getObjectWidth(Stair.threadWidth) >= 0.28 m
getObjectHeight(Stair.riserHeight) <= 0.18m
}
check(ERCDAPA_2_1_*_1_8_다_3){
getObjectGradient(Stair.riserGradient) >= 60
getObjectLength(Stair.nosingLength) < 3 cm
}
Python Code 변환 예정
2
장애인ㆍ노인ㆍ임산부 등의 편의증진 보장에 관한 법률 시행령 제 별표2조
1. 삭제 <2006.1.19>
2. 공원<표-EDCDAPA_*_2_T1>
(편의시설의 종류
:설치기준)
가. 장애인 등의 출입이 가능한 출입구
:공원 외부에서 내부로 이르는 출입구는 주출입구를 포함하여 적어도 하나 이상을 장애인등의 출입이 가능하도록 유효폭·형태 및 부착물 등을 고려하여 설치하여야 한다.
나. 장애인등의 통행이 가능한 보도
:공원시설(공중이 직접 이용하는 시설에 한한다)에 접근할 수 있는 공원안의 보도중 적어도 하나는 장애인등이 통행할
// 장애인ㆍ노인ㆍ임산부 등의 편의증진보장에 관한 법률 시행령 별표2 대상시설별 편의시설의 종류 및 설치기준(제4조관련)
Check(EDCDAPA_*_2_3_가_2_가){
IF CS1 AND CS2 THEN KS
}
ParkingLot myParkingLot{
isObjectProperty(ParkingLot.isAttachedParking) = TRUE
}
CS1 {
isExist(myParkingLot) = TRUE
}
CS2 {
getObjectProperty(myParkingLot.numberOfParkingUnit ) >= 10
}
KS1 {
Area myArea{
isObjectProperty(ParkingLotArea.isHandicapParking)=TRUE
}
hasSpace(myParkingLot, myArea) = TRUE
getResult(EDPA_*_1) = TRUE
}
Check(EDCDAPA_*_2_3_가_4_가){
KS1 IF CS1 THEN KS2
}
Door myDoor1{
isObjectProperty(Door.isEntrance)=TRUE
isObjectProperty(myDoor1.isHandicapAccessible)=TRUE
}
Door myDoor2{
Door.Space.usage = “Office”
isObjectProperty(myDoo2.isHandicapAccessible)=TRUE
}
KS1 {
isExist(myDoor1) = TRUE
isExist(myDoor2) = TRUE
}
CS1{
Building.usage = “BusinessFacility.GovernmentOfficeBuilding”
Building.usage != “ClassINeighborhoodLivingFacility”
}
KS2 {
isObjectProperty(myDoor1.isAutomatic)=TRUE
isObjectProperty(myDoo2.isAutomatic)=TRUE
}
ParkingLot myParkingLot{
isObjectProperty(ParkingLotArea.isHandicapParking)=TRUE
}
Building myBuilding1_1{
Building.usage = “ClassINeighborhoodLivingFacility.RetailStore”
Building.usage = “ClassINeighborhoodLivingFacility.Barbershop”
Building.usage = “ClassINeighborhoodLivingFacility.BeautyShop”
Building.usage = “ClassINeighborhoodLivingFacility.Bathhouse”
}
Building myBuilding1_2{
Building.usage = “ClassINeighborhoodLivingFacility.CommunityCenter”
Building.usage = “ClassINeighborhoodLivingFacility.PoliceBox”
Building.usage = “ClassINeighborhoodLivingFacility.PoliceSubstation”
Building.usage = “ClassINeighborhoodLivingFacility.PostOffice”
Building.usage = “ClassINeighborhoodLivingFacility.HealthCenter”
Building.usage = “ClassINeighborhoodLivingFacility.PublicLibrary”
Building.usage = “ClassINeighborhoodLivingFacility.NationalHealthInsuranceService_NationalPensionService_Korea EmploymentAgencyForTheDisabled_KoreaWorkersCompensationAndWelfareServiceOffice”
}
Building myBuilding1_3{
Building.usage = “ClassINeighborhoodLivingFacility.Clinic_ DentalClinic_OrientalMedicalClinic_MaternityClinic”
}
Building myBuilding1_4{
Building.usage = “ClassINeighborhoodLivingFacility.CommunityChildCenter”
Building.facilityArea >= 300 m2
}
Building myBuilding1_5{
Building.usage = “ClassINeighborhoodLivingFacility.Shelter”
}
Building myBuilding1_6{
Building.usage = “ClassINeighborhoodLivingFacility.PublicToilet”
}
Building myBuilding2_1{
Building.usage = “ClassIINeighborhoodLivingFacility.Restaurant”
Building.usage = “ClassIINeighborhoodLivingFacility.RestingRestaurant”
Building.usage = “ClassIINeighborhoodLivingFacility.Bakery”
Building.usage != “ClassINeighborhoodLivingFacility”
Building.facilityArea >= 300 m2
}
Building myBuilding2_2{
Building.usage = “ClassIINeighborhoodLivingFacility.MassageParlor”
}
Building myBuilding3_1{
Building.usage = “CulturalAndAssemblyFacility.PerformanceHall”
Building.usage = “CulturalAndAssemblyFacility.Auditorium”
}
Building myBuilding3_2{
Building.usage = “CulturalAndAssemblyFacility.AssemblyHall”
}
Building myBuilding3_3{
Building.usage = “CulturalAndAssemblyFacility.ExhibitionHall”
Building.usage = “CulturalAndAssemblyFacility.ZoologicalAndBotanicalGarden”
}
Building myBuilding4_1{
Building.usage = “ReligiousFacility.ReligiousAssemblyFacility”
Building.facilityArea >= 500 m2
}
Building myBuilding5_1{
Building.usage = “CommercialFacility.WholesaleMarket”
Building.usage = “CommercialFacility.RetailMarket”
Building.usage = “CommercialFacility.Shop”
Building.facilityArea >= 1000 m2
}
Building myBuilding6_1{
Building.usage = “MedicalFacility.Hospital”
Building.usage = “MedicalFacility.DetentionHospital”
}
Building myBuilding7_1{
Building.usage = “EducationAndResearchFacility.School”
Building.usage = “EducationAndResearchFacility.SpecialSchool”
Building.usage != “EducationAndResearchFacility.Kindergarten”
}
Building myBuilding7_2{
Building.usage = “EducationAndResearchFacility.Kindergarten”
}
Building myBuilding7_3{
Building.usage = “EducationAndResearchFacility.TrainingInstitute”
Building.usage = “EducationAndResearchFacility.VocationalTrainingCenter”
Building.usage != “EducationAndResearchFacility.EducationalInstitute”
Building.facilityArea >= 500 m2
}
Building myBuilding8_1{
Building.usage = “FacilitiesForTheAgedAndChildren.ChildrenRelatedFacility”
Building.usage = “FacilitiesForTheAgedAndChildren.WelfareFacilityForTheAged”
Building.usage = “FacilitiesForTheAgedAndChildren.SocialWelfareFacility”
Building.usage = “경로당”
Building.usage = “ResidentialFacilityForTheDisabled”
Building.facilityArea >= 500 m2
}
Building myBuilding9_1{
Building.usage = “Trainingfacility.TrainingFacilityInLivingZone”
Building.usage = “Trainingfacility.TrainingFacilityInNatureZone”
}
Building myBuilding10_1{
Building.usage = “SportsFacility”
Building.facilityArea >= 500 m2
}
Building myBuilding11_1{
Building.usage = “BusinessFacility.GovernmentOfficeBuilding”
Building.facilityArea >= 500 m2
}
Building myBuilding11_2{
Building.usage = “BusinessFacility.FinanceBusiness”
Building.usage = “BusinessFacility.Office”
Building.usage = “BusinessFacility.NewspaperOffice”
Building.usage = “BusinessFacility.Officetel”
Building.facilityArea >= 500 m2
}
Building myBuilding12_1{
Building.usage = “LodgingFacility.GeneralLodgingFacility”
}
Building myBuilding12_2{
Building.usage = “LodgingFacility.TouristAccommodation”
}
Building myBuilding13_1{
Building.usage = “Factory”
}
Building myBuilding14_1{
Building.usage = “FacilityForMotorVehicle.ParkingLot”
Building.usage = “FacilityForMotorVehicle.DrivingSchool”
}
Building myBuilding15_1{
Building.usage = “FacilityForBroadcastingAndTelecommunication.BroadcastingStation”
Building.facilityArea >= 1000 m2
}
Building myBuilding15_2{
Building.usage = “FacilityForBroadcastingAndTelecommunication.TelegraphAndTelephoneStation”
Building.facilityArea >= 1000 m2
}
Building myBuilding16_1{
Building.usage = “CorrectionalFacilityAndMilitaryInstallation.Prison”
Building.usage = “CorrectionalFacilityAndMilitaryInstallation.DetentionCenter”
}
Building myBuilding17_1{
Building.usage = “CemeteryAndRelatedFacility.CremationFacility”
Building.usage = “CemeteryAndRelatedFacility.CharnelHouse”
Building.usage != “ReligiousFacility”
}
Building myBuilding18_1{
Building.usage = “FacilityForTourismAndRelaxation.BandStand”
Building.usage = “FacilityForTourismAndRelaxation.OutdoorTheater”
Building.usage = “FacilityForTourismAndRelaxation.ChildrenCenter”
}
Building myBuilding18_2{
Building.usage = “FacilityForTourismAndRelaxation.RestArea”
}
Building myBuilding19_1{
Building.usage = “FuneralParlor”
}
Check(EDCDAPA_*_2_3_나){
IF (CS1 THEN KS1) OR (CS2 THEN KS2)
}
CS1{
Building myBuilding20_1 {
getObject(myBuilding1_1 | myBuilding12_2)
}
KS1{
hasSpace(myBuilding20_1, myParkingLot) = TRUE
OR hasSpace(myBuilding20_1, myParkingLot) = FALSE
}
CS2{
Building myBuilding20_2 {
getObject(myBuilding1_2 | myBuilding1_3 | myBuilding1_4 | myBuilding2_1 | myBuilding2_2 | myBuilding3_1 | myBuilding3_2 | myBuilding3_3 | myBuilding4_1 | myBuilding5_1 | Building myBuilding6_1 | Building myBuilding7_1 | myBuilding7_2 | myBuilding7_3 | myBuilding8_1 | myBuilding9_1 | myBuilding10_1 | myBuilding11_1 | myBuilding11_2 | myBuilding12_1 | myBuilding13_1 | myBuilding14_1 | myBuilding15_1 | myBuilding15_2 | myBuilding16_1 | myBuilding17_1 | myBuilding18_1 | myBuilding18_2 | myBuilding19_1)
}
KS2{
hasSpace(Building20_2, myParkingLot) = TRUE
}
Check(EDCDAPA_*_2_3_나){
IF CS THEN KS
CS{
Building myBuilding20_3{
getObject(myBuilding1_1 | myBuilding1_2 | myBuilding1_3 | myBuilding1_4 | myBuilding1_5 | myBuilding1_6 | myBuilding2_1 | myBuilding2_2 | myBuilding3_1 | myBuilding3_2 | myBuilding3_3 | myBuilding4_1 | myBuilding5_1 | Building myBuilding6_1 | Building myBuilding7_1 | myBuilding7_2 | myBuilding7_3 | myBuilding8_1 | myBuilding9_1 | myBuilding10_1 | myBuilding11_1 | myBuilding11_2 | myBuilding12_1 | myBuilding13_1 | myBuilding14_1 | myBuilding15_1 | myBuilding15_2 | myBuilding16_1 | myBuilding17_1 | myBuilding18_1 | myBuilding18_2 | myBuilding19_1)
}
KS{
isObjectProperty(myBuilding20_3.Door.isSillFree) = TRUE
}
Python Code 변환 예정
3
주차장법 시행규칙 제 4조 1 항 8호 가 목
가. 주차대수 규모가 20대 이상 50대 미만인 경우: 한 면 이상
//주차장법 시행규칙 4조 (노상주차장의 구조·설비기준) 1항 8호 가목
Check(ERPA_4_1_8_가){
IF CS THEN KS
}
CS{
getObjectCount(ParkingLot.ParkingUnit )>=20
getObjectCount(ParkingLot.numberOfParkingUnit )<50
}
KS{
Area myArea{
isObjectProperty(ParkingLotArea.isHandicapParking)=True
}
getObjectCount(myArea)>=1
}
Python Code 변환 예정
4
주차장법 시행규칙 제 4조 1 항 8호 나 목
나. 주차대수 규모가 50대 이상인 경우: 주차대수의 2퍼센트부터 4퍼센트까지의 범위에서 장애인의 주차수요를 고려하여 해당 지방자치단체의 조례로 정하는 비율 이상
//주차장법 시행규칙 4조 (노상주차장의 구조·설비기준) 1항 8호 나목
Check(ERPA_4_1_8_나){
IF CS THEN KS
}
CS{
getObjectCount(ParkingLot.ParkingUnit )>=50
}
KS{
Area myArea{
isObjectProperty(ParkingLotArea.isHandicapParking)=True
}
PLC=getObjectProperty(ParkingLot.numberOfParkingUnit )
getObjectCount(myArea)>=PLC*2%
getObjectCount(myArea)<=PLC*4%
getResult(Unimplemented_LGMO)=True
}
Python Code 변환 예정
5
주차장법 시행규칙 제 5조 7호
7. 주차대수 400대를 초과하는 규모의 노외주차장의 경우에는 노외주차장의 출구와 입구를 각각 따로 설치하여야 한다. 다만, 출입구의 너비의 합이 5.5미터 이상으로서 출구와 입구가 차선 등으로 분리되는 경우에는 함께 설치할 수 있다.
//주차장법 시행규칙 5조 (노외주차장의 설치에 대한 계획기준) 7항
Check(ERPA_5_7){
IF (!CS1 AND CS2) THEN KS
}
CS2{
ParkingLot myParkingLot{
isObjectProperty(ParkingLot.isOffStreetParking)=TRUE
}
getObjectProperty(ParkingLot.numberOfParkingUnit ) > 400
}
Opening myOpening1{
isObjectProperty(myParkingLot.Oepning.isEntrance)=TRUE
}
Opening myOpening2{
isObjectProperty(myParkingLot.Oepning.isExit)=TRUE
}
myOpening1 != myOpening2
CS1{
getObjectProperty(myOpening1.width) = W1
getObjectProperty(myOpening2.width) = W2
W1 + W2 >= 5.5m
}
KS2{
isExist(myOpening1) = TRUE
isExist(myOpening2) = TRUE
}
Python Code 변환 예정
6
주차장법 시행규칙 제 5조 8호
8. 특별시장·광역시장, 시장·군수 또는 구청장이 설치하는 노외주차장의 주차대수 규모가 50대 이상인 경우에는 주차대수의 2퍼센트부터 4퍼센트까지의 범위에서 장애인의 주차수요를 고려하여 지방자치단체의 조례로 정하는 비율 이상의 장애인 전용주차구획을 설치하여야 한다.
//주차장법 시행규칙 5조 (노상주차장의 구조·설비기준) 8호
Check(ERPA_5_0_8){
IF CS THEN KS
}
CS{
ParkingLot myParkingLot{
isObjectProperty(ParkingLot.isOffStreetParking)=True
}
getObjectCount(myParkingLot.ParkingUnit )>=50
}
KS{
Area myArea{
isObjectProperty(myParkingLotArea.isHandicapParking)=True
}
PLC=getObjectCount(myParkingLot.ParkingUnit )
getObjectCount(myArea)>=PLC*2%
getObjectCount(myArea)<=PLC*4%
getResult(Unimplemented_LGMO)=True
}
Python Code 변환 예정
7
주차장법 시행규칙 제 11조 2 항 1호
1. 주차대수 30대를 초과하는 지하식 또는 건축물식 형태의 자주식주차장으로서 판매시설, 숙박시설, 운동시설, 위락시설, 문화 및 집회시설, 종교시설 또는 업무시설(이하 이 항에서 "판매시설등"이라 한다)의 용도로 이용되는 건축물의 부설주차장
//주차장법 시행규칙 11조 (부설주차장의 구조·설비기준) 2항 1조
Check(ERPA_11_2_1){
KS
}
KS{
Building myBuilding{
getBuildingUsage() = "CommercialFacility" OR "LodgingFacility", "AmusementFacility", "CulturalAndAssemblyFacility", "ReligiousFacility","BusinessFacility"
}
isObjectProperty(myBuilding.ParkingLot.isAttachedParking) = TRUE
getObjectProperty(ParkingLot.numberOfParkingUnit ) > 30
getObjectProperty(ParkingLot.operationType) = "DriveInParking" OR "MechanicalParking"
}
Python Code 변환 예정
8
주차장법 시행규칙 제 11조 4 항
④ 주차대수 50대 이상의 부설주차장에 설치되는 확장형 주차단위구역에 관하여는 제6조제1항제14호를 준용한다. <신설 2012.7.2>
//주차장법 시행규칙 11조 (부설주차장의 구조·설비기준) 4항
Check(ERPA_11_4){
IF CS THEN KS
}
CS{
ParkingLot myParkingLot{
isObjectProperty(ParkingLot.isAttachedParking) = TRUE
getObjectProperty(ParkingLot.numberOfParkingUnit ) >= 50
}
ParkingUnit myParkingUnit {
getObjectProperty(ParkingUnit ) = "ExtensionType"
}
hasSpace(myParkingLot, myParkingUnit ) = TRUE
}
KS{
getResult(ERPA_6_1_14) = TRUE
}
Python Code 변환 예정
9
주차장법 시행규칙 제 11조 5 항 1호
1. 차로의 너비는 2.5미터 이상으로 한다. 다만, 주차단위구획과 접하여 있는 차로의 너비는 주차형식에 따라 다음 표에 따른 기준 이상으로 하여야 한다.
┌───────┬──────┐
│주차형식 │차로의 너비 │
├───────┼──────┤
│평행주차 │3.0미터 │
├───────┼──────┤
│직각주차 │6.0미터 │
├───────┼──────┤
│60도 대향주차 │4.0미터 │
├───────┼──────┤
│45도 대향주차 │3.5미터 │
├───────┼──────┤
│교차주차 │3.5미터 │
└───────┴──────┘
//주차장법 시행규칙 11조 (부설주차장의 구조·설비기준) 5항 1호
Check(ERPA_11_5_1){
KS
}
KS{
IF isAdjacent(ParkingUnit , ParkingLot.Driveway)=True
THEN
IF getObjectProperty(ParkingUnit .parkingType)="ParallelParking"
THEN ParkingLot.Driveway.width>=3.0 m
ELSE IF getObjectProperty(ParkingUnit .parkingType)="RightAngleParking"
THEN ParkingLot.Driveway.width>=6.0 m
ELSE IF getObjectProperty(ParkingUnit .parkingType)="60AngleParking"
THEN ParkingLot.Driveway.width>=4.0 m
ELSE IF getObjectProperty(ParkingUnit .parkingType)="45AngleParking"
THEN ParkingLot.Driveway.width>=3.5 m
ELSE IF getObjectProperty(ParkingUnit .parkingType)="CrossParking"
THEN ParkingLot.Driveway.width>=3.5 m
END IF
ELSE THEN
ParkingLot.Driveway.width>=2.5 m
END IF
}
Python Code 변환 예정
10
주차장법 시행규칙 제 6조 1 항 14호
14. 노외주차장에는 제3조제1항제2호에 따른 확장형 주차단위구획을 주차단위구획 총수(평행주차형식의 주차단위구획 수는 제외한다)의 30퍼센트 이상 설치하여야 한다.
//주차장법 시행규칙 6조 (노외주차장의 구조·설비기준) 1항 14호
Check(ERPA_6_1_14){
KS
}
KS{
ParkingLot myParkingLot{
isObjectProperty(ParkingLot.isOffStreetParking) = TRUE
}
ParkingUnit myParkingUnit {
getResult(ERPA_3_1_2) = TRUE
getObjectProperty(ParkingUnit .parkingUseType) = "ExtensionType"
}
ParkingUnit myParkingUnit 2{
getResult(ERPA_3_1_2) = TRUE
getObjectProperty(ParkingUnit .parkingType) = "ParallelParking"
}
hasSpace(myParkingLot, myParkingUnit ) = TRUE
(getObjectProperty(ParkingUnit .numberOf)*0.3 - getObjectNumber(myParkingUnit 2)) <= getObjectNumber(myParkingUnit )
}
Python Code 변환 예정
11
주차장법 시행규칙 제 11조 5 항
⑤ 부설주차장의 총주차대수 규모가 8대 이하인 자주식주차장(지평식 및 건축물식 중 필로티 구조만 해당한다)의 구조 및 설비기준은 제1항 본문에도 불구하고 다음 각 호에 따른다. <개정 2012.7.2, 2013.1.25>
//주차장법 시행규칙 11조 (부설주차장의 구조·설비기준) 5항
Check(ERPA_11_5){
IF CS THEN KS
}
CS{
ParkingLot myParkingLot{
isObjectProperty(ParkingLot.isAttachedParking) = TRUE
isObjectProperty(ParkingLot.operationType) = "DriveInParking"
}
getObjectProperty(myParkingLot.numberOfParkingUnit ) >= 8
}
KS{
getResult(ERPA_11_5_1) = TRUE
getResult(ERPA_11_5_2) = TRUE
getResult(ERPA_11_5_3) = TRUE
}
Python Code 변환 예정
12
주차장법 시행규칙 제 3조 1 항 1호
1. 평행주차형식의 경우
┌───────────┬──────┬──────┐
│구분 │너비 │길이 │
├───────────┼──────┼──────┤
│경형 │1.7미터 이상│4.5미터 이상│
├───────────┼──────┼──────┤
│일반형 │2.0미터 이상│6.0미터 이상│
├───────────┼──────┼──────┤
│보도와 차도의 구분이 │2.0미터 이상│5.0미터 이상│
│없는 주거지역의 도로 │ │ │
├───────────┼──────┼──────┤
│이륜자동차전용 │1.0미터 이상│2.3미터 이상│
└───────────┴──────┴──────┘
// 주차장법 시행규칙 3조 (주차장의 주차구획) 1항 1호
Check(ERPA_3_1_1){
KS
}
KS{
getObjectProperty(ParkingUnit .parkingType) = "ParallelParking"
}
def Check():
for parklot in ROOT.SELECT('parklot'):
park_type = parklot.SELECT('prop', '주차형식').STRING()
car_type = parklot.SELECT('prop', '주차단위구획').STRING()
min_w = 0.0
min_l = 0.0
if park_type == '평행주차':
if car_type == '경형':
min_w = 1.7
min_l = 4.5
elif car_type == '일반형':
min_w = 2.0
min_l = 6.0
elif car_type == '이륜자동차전용':
min_w = 1.0
min_l = 2.3
else:
continue
else:
if car_type == '경형':
min_w = 2.0
min_l = 3.6
elif car_type == '일반형':
min_w = 2.5
min_l = 5.0
elif car_type == '확장형':
min_w = 2.6
min_l = 5.2
elif car_type == '장애인전용':
min_w = 3.3
min_l = 5.0
elif car_type == '이륜자동차전용':
min_w = 1.0
min_l = 2.3
else:
continue
width = parklot.SELECT('width').UNIT('m')
length = parklot.SELECT('length').UNIT('m')
w = width.NUMBER()
l = length.NUMBER()
if w < min_w:
width.ERROR('너비: ' + str(w) + ' (< ' + str(min_w) + ')' )
elif l < min_l:
length.ERROR('길이: ' + str(l) + ' (< ' + str(min_l) + ')' )
else:
parklot.SUCCESS(str(w) + ' x ' + str(l))
13
주차장법 시행규칙 제 3조 1 항 2호
2. 평행주차형식 외의 경우
┌────────┬──────┬──────┐
│구분 │너비 │길이 │
├────────┼──────┼──────┤
│경형 │2.0미터 이상│3.6미터 이상│
├────────┼──────┼──────┤
│일반형 │2.5미터 이상│5.0미터 이상│
├────────┼──────┼──────┤
│확장형 │2.6미터 이상│5.2미터 이상│
├────────┼──────┼──────┤
│장애인전용 │3.3미터 이상│5.0미터 이상│
├────────┼──────┼──────┤
│이륜자동차 전용 │1.0미터 이상│2.3미터 이상│
└────────┴──────┴──────┘
// 주차장법 시행규칙 3조 (주차장의 주차구획) 1항 2호
Check(ERPA_3_1_2){
KS
}
KS{
getObjectProperty(ParkingUnit .parkingType) != "ParallelParking"
}
def Check():
for parklot in ROOT.SELECT('parklot'):
park_type = parklot.SELECT('prop', '주차형식').STRING()
car_type = parklot.SELECT('prop', '주차단위구획').STRING()
min_w = 0.0
min_l = 0.0
if park_type == '평행주차':
if car_type == '경형':
min_w = 1.7
min_l = 4.5
elif car_type == '일반형':
min_w = 2.0
min_l = 6.0
elif car_type == '이륜자동차전용':
min_w = 1.0
min_l = 2.3
else:
continue
else:
if car_type == '경형':
min_w = 2.0
min_l = 3.6
elif car_type == '일반형':
min_w = 2.5
min_l = 5.0
elif car_type == '확장형':
min_w = 2.6
min_l = 5.2
elif car_type == '장애인전용':
min_w = 3.3
min_l = 5.0
elif car_type == '이륜자동차전용':
min_w = 1.0
min_l = 2.3
else:
continue
width = parklot.SELECT('width').UNIT('m')
length = parklot.SELECT('length').UNIT('m')
w = width.NUMBER()
l = length.NUMBER()
if w < min_w:
width.ERROR('너비: ' + str(w) + ' (< ' + str(min_w) + ')' )
elif l < min_l:
length.ERROR('길이: ' + str(l) + ' (< ' + str(min_l) + ')' )
else:
parklot.SUCCESS(str(w) + ' x ' + str(l))
14
주차장법 시행규칙 제 6조 1 항 4호
4. 노외주차장의 출입구의 너비는 3.5미터 이상으로 하여야 하며, 주차대수규모가 50대 이상인 경우에는 출구와 입구를 분리하거나 너비 5.5미터 이상의 출입구를 설치하여 소통이 원활하도록 하여야 한다.
//주차장법 시행규칙 6조 (노외주차장의 구조·설비기준) 1항 4호
Check(ERPA_6_1_4){
KS1 AND IF CS THEN KS2
}
KS1{
ParkingLot myParkingLot{
isObjectProperty(ParkingLot.isOffStreetParking)=TRUE
}
getObjectProperty(myParkingLot.Opening.width) >= 3.5m
}
CS{
getObjectProperty(ParkingLot.numberOfParkingUnit ) >= 50
}
KS2{
Opening myOpening1{
isObjectProperty(Opening.isExit)=TRUE
}
Opening myOpening2{
isObjectProperty(Opening.isEntrance)=TRUE
}
myOpening1 != myOpening2
isExist(myOpening1)=TRUE
isExist(myOpening2)=TRUE
OR getObjectProperty(Opening.width) >= 5.5m
}
Python Code 변환 예정
15
주차장법 시행규칙 제 6조 1 항 5호 바 목
바. 주차대수규모가 50대 이상인 경우의 경사로는 너비 6미터 이상인 2차선의 차로를 확보하거나 진입차로와 진출차로를 분리하여야 한다.
//주차장법 시행규칙 6조 (노외주차장의 구조·설비기준) 1항 5호 바목
Check(ERPA_6_1_5_바){
IF CS THEN (KS1 OR KS2)
}
CS{
getObjectProperty(ParkingLot.numberOfParkingUnit ) >= 50
hasObject(Ramp, ParkingLot.Driveway.)=TRUE
}
KS1{
getObjectProperty(ParkingLot.Driveway.width) >= 6m
getObjectProperty(ParkingLot.Driveway.numberOfLane) >= 2
}
KS2{
Opening myOpening1{
isObjectProperty(Opening.isExit)=TRUE
}
Opening myOpening2{
isObjectProperty(Opening.isEntrance)=TRUE
}
myOpening1 != myOpening2
hasObject(ParkingLot.Driveway., myOpening1)=TRUE
hasObject(ParkingLot.Driveway., myOpening2)=TRUE
}
Python Code 변환 예정
16
주차장법 시행규칙 제 6조 1 항 3호 나 1) 목
1) 이륜자동차전용 노외주차장
(표)
//주차장법 시행규칙 6조 (노외주차장의 구조·설비기준) 1항 3호 나목
Check(ERPA_6_1_3_나){
IF CS THEN KS
}
CS{
getSpaceUsage()="ParkingLot"
getObjectProperty(ParkingLot.parkingUseType)="TwowheeledVehicle"
}
KS{
IF getObjectProperty(ParkingUnit .parkingType)="ParallelParking"
IF getObjectCount(Opening)>=2
THEN ParkingLot.Driveway.width>=2.25 m
ELSE IF getObjectCount(Opening)=1
THEN ParkingLot.Driveway.width>=3.5 m
END IF
ELSE IF getObjectProperty(ParkingUnit .parkingType)="RightAngleParking"
IF getObjectCount(Opening)>=2
THEN ParkingLot.Driveway.width>=4.0 m
ELSE IF getObjectCount(Opening)=1
THEN ParkingLot.Driveway.width>=4.0 m
END IF
ELSE IF getObjectProperty(ParkingUnit .parkingType)="45AngleParking"
IF getObjectCount(Opening)>=2
THEN ParkingLot.Driveway.width>=2.3 m
ELSE IF getObjectCount(Opening)=1
THEN ParkingLot.Driveway.width>=3.5 m
END IF
END IF
}
Python Code 변환 예정
17
주차장법 시행규칙 제 6조 1 항 3호 나 2) 목
2) 1) 외의 노외주차장
(표)
//주차장법 시행규칙 6조 (노외주차장의 구조·설비기준) 1항 3호 나목
Check(ERPA_6_1_3_나){
IF CS THEN KS
}
CS{
getSpaceUsage()="ParkingLot"
isObjectProperty(ParkingLot.isOffStreetParking)=True
getObjectProperty(ParkingLot.parkingUseType)!="TwowheeledVehicle"
}
KS{
IF getObjectProperty(ParkingUnit .parkingType)="ParallelParking"
IF getObjectCount(Opening)>=2
THEN ParkingLot.Driveway.width>=3.3 m
ELSE IF getObjectCount(Opening)=1
THEN ParkingLot.Driveway.width>=5.0 m
END IF
ELSE IF getObjectProperty(ParkingUnit .parkingType)="RightAngleParking"
IF getObjectCount(Opening)>=2
THEN ParkingLot.Driveway.width>=6.0 m
ELSE IF getObjectCount(Opening)=1
THEN ParkingLot.Driveway.width>=6.0 m
END IF
ELSE IF getObjectProperty(ParkingUnit .parkingType)="60AngleParking"
IF getObjectCount(Opening)>=2
THEN ParkingLot.Driveway.width>=4.5 m
ELSE IF getObjectCount(Opening)=1
THEN ParkingLot.Driveway.width>=5.5 m
END IF
ELSE IF getObjectProperty(ParkingUnit .parkingType)="45AngleParking"
IF getObjectCount(Opening)>=2
THEN ParkingLot.Driveway.width>=3.5 m
ELSE IF getObjectCount(Opening)=1
THEN ParkingLot.Driveway.width>=5.0 m
END IF
getObjectProperty(ParkingUnit .parkingType)="CrossParking"
IF getObjectCount(Opening)>=2
THEN ParkingLot.Driveway.width>=3.5 m
ELSE IF getObjectCount(Opening)=1
THEN ParkingLot.Driveway.width>=5.0 m
END IF
END IF
}
Python Code 변환 예정
18
주차장법 시행령 제 별표1조
부설주차장의 설치대상 시설물 종류 및 설치기준(제6조제1항 관련)
(시설물
:설치기준)
1. 위락시설
:○ 시설면적 100㎡당 1대(시설면적/100㎡)
2. 문화 및 집회시설(관람장은 제외한다), 종교시설, 판매시설, 운수시설, 의료시설(정신병원·요양병원 및 격리병원은 제외한다), 운동시설(골프장·골프연습장 및 옥외수영장은 제외한다), 업무시설(외국공관 및 오피스텔은 제외한다), 방송통신시설 중 방송국, 장례식장
:○ 시설면적 150㎡당 1대(시설면적/
//주차장법 시행령 별표1 부설주차장의 설치대상 시설물 종류 및 설치기준
Check(EDPA_*_1_1){
IF CS THEN KS
}
Space mySpace1{
getBuildingUsage()=” AmusementFacility”
myTotalFloorArea = getTotalFloorArea(mySpace1)
CS{
isExist(mySpace1)=TRUE
}
KS{
ParkingLot.numberOfParkingUnit <=myTotalFloorArea/100
}
Check(EDPA_*_1_2){
IF CS THEN KS
}
Space mySpace2{
(getBuildingUsage()= “CulturalAndAssemblyFacility”
AND getBuildingUsage() !=” Auditorium”)
OR (getBuildingUsage() = “ReligiousFacility | CommercialFacility | TransportationFacilit”
OR getBuildingUsage() = ”MedicalFacility”
AND getBuildingUsage() != “MentalHospital | ConvalescentHospital | DetentionHoispital”)
OR (getBuildingUsage() = “SportsFacility”
AND getBuildingUsage() != “GolfCourse | GolfDrivingRange | OurdoorSwimmingPool”)
OR (getBuildingUsage()= “BusinessFacility”
AND getBuildingUsage() != “ForeignOfficialResidence | Officetels” )
}
myTotalFloorArea2 = getTotalFloorArea(mySpace2)
}
CS{
isExist(mySpace2)=TRUE
}
KS{
ParkingLot.numberOfParkingUnit <=myTotalFloorArea2/150
}
Check(EDPA_*_1_3){
IF CS THEN KS
}
Space mySpace3{
((getBuildingUsage ()=” ClassINeighborhoodLivingFacility”
AND getSpaceUsage != “PublicToilet | Shelter | CommunityChildCenter”)
OR getBuildingUsage ()=”ClassIINeighborhoodLivingFacility”
OR getBuildingUsage ()=”LodgingFacility”)
}
myTotalFloorArea3 = getTotalFloorArea(mySpace3)
}
CS{
isExist(mySpace3)=TRUE
}
KS{
ParkingLot.numberOfParkingUnit <=myTotalFloorArea3/200
}
Check(EDPA_*_1_4){
IF CS1 THEN KS1 OR CS2 THEN KS2
}
Space mySpace1{
getBuildingUsage ()=” DetachedHouse”
}
myTotalFloorArea = getTotalFloorArea(mySpace1)
}
CS1{
myTotalFloorArea>50
AND myTotalFloorArea<=150
}
KS1{
isObjectProperty(parkingLot.numberofParkingUnit )=1
}
CS2{
myTotalFloorArea>150
}
KS2{
(myTotalFloorArea-150)/100+1=ParkingLot.numberofParkingUnit
}
Check(EDPA_*_1_7){
IF CS THEN KS
}
Space mySpace7{
getBuildingUsage ()=”Trainingfacility”
getBuildingUsage ()=”Factory”
getBuildingUsage () != ”AptartmentTypeFactory”
}
myTotalFloorArea7 = getTotalFloorArea(myspace7)
CS{
isExist(mySpace7)=TRUE
}
KS{
ParkingLot.numberOfParkingUnit <=myTotalFloorArea7/400
}
Check(EDPA_*_1_8){
IF CS THEN KS
}
Space mySpace8{
getBuildingUsage ()= “Warehouse”
}
myTotalFloorArea8 = getTotalFloorArea(mySpace8)
}
CS{
isExist(mySpace8)=TRUE
}
KS{
ParkingLot.numberOfParkingUnit <=myTotalFloorArea8/400
}
Check(EDPA_*_1_9){
IF CS THEN KS
}
Space mySpace9{
getBuildingUsage ()= “DormitoryForStudents”
}
myTotalFloorArea9 = getTotalFloorArea(myspace9)
CS{
isExist(mySpace9)=TRUE
}
KS{
ParkingLot.numberOfParkingUnit <=myTotalFloorArea9/400
}
Check(EDPA_*_1_10){
IF CS THEN KS
}
Space mySpace10 {
getObject(Space) != myspace1 | myspace2 | myspace3 | myspace4 | myspace5 | myspace6 | myspace7 | myspace8 | myspace9 |
}
myTotalFloorArea10 = getTotalFloorArea(mySpace10)
}
CS{
isExist(mySpace9)=TRUE
}
KS{
ParkingLot.numberOfParkingUnit <=myTotalFloorArea10/300
}
Check(EDPA_*_1_0_1){
IF CS THEN KS
}
CS{
getResult(EDPA_*_1_0_1_가)= TRUE
OR getResult(EDPA_*_1_0_1_나)= TRUE
OR getResult(EDPA_*_1_0_1_다)= TRUE
OR getResult(EDPA_*_1_0_1_라)= TRUE
OR getResult(EDPA_*_1_0_1_마)= TRUE
OR getResult(EDPA_*_1_0_1_바)= TRUE
OR getResult(EDPA_*_1_0_1_사)= TRUE
}
KS{
isExist(ParkingLot.isAttachedParking)=FALSE
}
Check(EDPA_*_1_0_1_가){
KS
}
isExist(ClassINeighborhoodLivingFacility.Substation)=TRUE
OR isExist(ClassINeighborhoodLivingFacility.PumpingStation)=TRUE
OR isExist(ClassINeighborhoodLivingFacility.PurificationPlant)=TRUE
OR isExist(ClassINeighborhoodLivingFacility.Shelter)=TRUE
OR isExist(ClassINeighborhoodLivingFacility.PublicToilet)=TRUE
Check(EDPA_*_1_0_1_나){
KS
}
isExist(ReligiousFacility.Monastery)=TRUE
OR isExist(ReligiousFacility.Convent)=TRUE
OR isExist(ReligiousFacility.Chapel)=TRUE
OR isExist(ReligiousFacility.Shrine)=TRUE
Check(EDPA_*_1_0_1_다){
KS
}
isExist(getBuildingUsage()=”FacilityForAnimalAndPlant”)=TRUE
AND isExist(getBuildingUsage()=”SlaughterHouse”)=FALSE
AND isExist(getBuildingUsage()=”ChickenSlaughterHouse”)=FALSE
Check(EDPA_*_1_0_1_라){
KS
}
isExist(FacilityForBroadcastingAndTelecommunication.TransmitAndReceptionAndTransitFacility)=TRUE
Check(EDPA_*_1_0_1_마){
KS
}
getObjectProperty(Building.isExclusiveUseOfParkingLot) = FALSE
(getBuildingUsage() != "CommercialFacility.DepartmentStore" OR "CommercialFacility.ShoppingCenter" OR "LargeStore"
OR getBuildingUsage() != "CulturalAndAssemblyFacility.MovieTheater" OR "CulturalAndAssemblyFacility.ExhibitionHall" OR "CulturalAndAssemblyFacility.WeddingHall"
Check(EDPA_*_1_0_1_바){
KS
}
getBuildingUsage()= “Station”
Check(EDPA_*_1_0_1_사){
KS
}
getResult(EDBA_6_1_4)=TRUE
Check(EDPA_*_1_0_4){
KS
}
Space mySpace{
getBuildingUsage()= “DetachedHouse”
getBuildingUsage() !=”Multi-familyHouses”
}
getTotalArea(mySpace)<=50m2
getTotalArea(mySpace)/100 = ParkingLot.numberOfParkingUnit
Python Code 변환 예정